麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

從零開始學(xué)ios開發(fā)(四):IOS控件(1),ImageView、TextField、Keyboard

2019-11-14 20:23:01
字體:
供稿:網(wǎng)友

長(zhǎng)話短說,謝謝大家的關(guān)注,這篇寫了好長(zhǎng)時(shí)間,下面繼續(xù)學(xué)習(xí)ios。我將用2到3篇的篇幅來學(xué)習(xí)iphone上的一些常用控件,包括Image View、Text Field、Keyboard、Slider等等,這篇的內(nèi)容包括ImageView和Keyboard的使用。完成后的效果圖如下:

1)創(chuàng)建一個(gè)新的PRoject,選擇“Single View application”,命名為“Control Fun”,然后保存。
一些和前幾章相似的步驟在從這篇起就開始一筆待過了,也不再做截圖了,例如這里的創(chuàng)建一個(gè)新的project。

2)添加ImageView
選中project navigator中的BIDViewController.xib,在object library中找到Image View
并拖入iphone視圖中。
當(dāng)把Image View拖入iphone視圖后,Image View會(huì)拉伸充滿整個(gè)iphone的界面(除了最上面的狀態(tài)欄)。

(據(jù)我猜測(cè),很多app在啟動(dòng)時(shí)都會(huì)有一張圖片展示,停個(gè)幾秒鐘,就應(yīng)該是上面的這種效果,當(dāng)然,那時(shí)的狀態(tài)欄也是被遮住的。)
在ImageView的四條邊上總共有8個(gè)點(diǎn)可以調(diào)整ImageView的大小,鼠標(biāo)放在某一個(gè)點(diǎn)上去調(diào)整ImageView的大小,調(diào)整后的ImageView如下

至于具體的長(zhǎng)寬是多少這個(gè)無所謂,因?yàn)樽罱K的大小會(huì)以上傳圖片的實(shí)際大小為準(zhǔn)。

3)上傳圖片到project中,整個(gè)過程很簡(jiǎn)單,選中某一張圖片,拖到project navigator中的Supporting Files文件夾中

放開鼠標(biāo)后,一個(gè)對(duì)話框會(huì)彈出,問你如何處理這張圖片,我們選中Destination的checkbox,把圖片復(fù)制到項(xiàng)目中,其他保留默認(rèn)值即可。

4)為ImageView添加圖片
選中剛才添加的ImageView,在Attributes inspector中找到“Image View”中的Image

單擊下拉按鈕,剛才上傳的圖片已經(jīng)顯示在下拉列表中,選中即可,這樣,圖片就顯示在ImageView里面了。

5)調(diào)整圖片大小
默認(rèn)情況下,圖片會(huì)被拉伸到和ImageView一致的大小,圖片的顯示方式是由ImageView的Model屬性來控制的,Model屬性位于Attributes inspector中的View欄

上圖中,Model的值為“Scale To Fill”,就是充滿整個(gè)ImageView。

對(duì)于圖片大小和顯示方式的處理,iphone建議的是提供適當(dāng)大小的圖片(即圖片的大小和最終要顯示在iphone上的大小是一致的,不需要iphone的cpu進(jìn)行更多的處理,這樣有助于程序的快速運(yùn)行和節(jié)約cpu的消耗),如果同一張圖片有2種大小需要顯示,那么你就傳2張圖片到程序了就可以了。

6)調(diào)整ImageView到圖片的原始尺寸
首先選中圖片,第一次選中圖片的狀態(tài)和4)里面的一致,然后我們?cè)俅螁螕魣D片,這時(shí)圖片周圍會(huì)有一圈灰色的邊框

然后選中菜單欄中的Editor>Size to Fit Content,這樣ImageView會(huì)自動(dòng)調(diào)整到和圖片原始尺寸一致

最后在調(diào)整一下ImageView的顯示位置即可。

7)添加2個(gè)Label和2個(gè)textfield
Label在上一篇中已經(jīng)提到過,textfield在object library中的樣子:

添加過程比較簡(jiǎn)單,具體操作可以參考前2篇的,下面是添加完Label和textfield后的效果,Label和testfield的排列主要還是依靠藍(lán)色的輔助線

8)重命名Label,調(diào)整textfield大小

上圖中,2個(gè)Label的文字分別換成了Name和Number,并向右對(duì)其(同時(shí)選中2個(gè)Label,選擇菜單欄Editor>Align>Right Edges),2個(gè)textfield拉長(zhǎng)到了合適的寬度。

9)為textfield添加Placeholder文字
Placeholder text是一種提示性的文字,默認(rèn)顯示在空的textfield中,當(dāng)textfield獲得焦點(diǎn)并輸入內(nèi)容后,Placeholder text會(huì)自動(dòng)消失,當(dāng)刪除所有的內(nèi)容,Placeholder text會(huì)再次出現(xiàn)。
選中第一個(gè)textfield,在Attribute inspector中找到Placeholder,并輸入“Type a Name”

同樣為第二個(gè)textfield的Placeholder輸入“Type a Number”,完成后的效果

可以運(yùn)行一下程序(command + R),看看實(shí)際的Placeholder text的效果是怎么樣的。

至此,所有的界面布局都已經(jīng)完成,下面進(jìn)入code階段,將學(xué)習(xí)如何調(diào)用iphone的虛擬鍵盤。

10)虛擬數(shù)字鍵盤
如果在第9步運(yùn)行了程序,會(huì)發(fā)現(xiàn)當(dāng)textfield獲得焦點(diǎn)后,會(huì)有一個(gè)虛擬鍵盤彈出

但是第二個(gè)textfield期望的是只能夠輸入數(shù)字,不能夠輸入其他字符,因此需要改變虛擬鍵盤的類型,選中第二個(gè)textfield,在Attribute inspector中找到Keyboard,將其類型改成“Number Pad”

再次運(yùn)行程序,讓第二個(gè)text field獲取焦點(diǎn),一個(gè)虛擬數(shù)字鍵盤就出現(xiàn)了。

此時(shí),一個(gè)新的問題又出現(xiàn)了,當(dāng)我們輸入結(jié)束后,如何隱藏鍵盤?當(dāng)點(diǎn)擊虛擬鍵盤的“return”按鍵時(shí),它會(huì)調(diào)用一個(gè)Event,叫“Did End On Exit event”,我們可以關(guān)聯(lián)一個(gè)Action到這個(gè)event,當(dāng)觸發(fā)這個(gè)event時(shí),調(diào)用Action使鍵盤隱藏,下面說說具體的隱藏鍵盤的方法。

11)創(chuàng)建Outlet
在這個(gè)例子中,ImageView和Label在程序運(yùn)行時(shí)都不會(huì)改變,因此不必為他們創(chuàng)建Outlet,我們只需為2個(gè)textfield創(chuàng)建Outlet即可。
在這里就不詳細(xì)的重復(fù)創(chuàng)建Outlet的步驟了,有需要的朋友可以看我上一篇的文章,里面有描述如何創(chuàng)建Outlet。
Outlet創(chuàng)建完畢后的BIDViewController.h如下

復(fù)制代碼
#import <UIKit/UIKit.h>@interface BIDViewController : UIViewController@property (weak, nonatomic) IBOutlet UITextField *nameField;@property (weak, nonatomic) IBOutlet UITextField *numberField;@end
復(fù)制代碼

BIDViewController.m

復(fù)制代碼
#import "BIDViewController.h"@implementation BIDViewController@synthesize nameField;@synthesize numberField;......
復(fù)制代碼

我們添加了2個(gè)指向textfield的Outlet,分別命名為nameField和numberField。

12)手動(dòng)添加一個(gè)Action
在上一章里,我們是通過和添加Outlet同樣的方式在添加Action,在這章里,手動(dòng)的添加Action。
a)在BIDViewController.h中聲明一個(gè)Action:textFieldDoneEditing

復(fù)制代碼
#import <UIKit/UIKit.h>@interface BIDViewController : UIViewController@property (weak, nonatomic) IBOutlet UITextField *nameField;@property (weak, nonatomic) IBOutlet UITextField *numberField;- (IBAction)textFieldDoneEditing:(id)sender;@end
復(fù)制代碼

b)在BIDViewController.m的最后實(shí)現(xiàn)textFieldDoneEditing方法

- (IBAction)textFieldDoneEditing:(id)sender{    [sender resignFirstResponder];}

(下面是我個(gè)人對(duì)resignFirstResponder的理解,如果有錯(cuò),希望大家能夠指正,謝謝?。?br style="margin: 0px; padding: 0px;" />這里注意“resignFirstResponder”,F(xiàn)irstResponder的意思是正在和用戶交互的那個(gè)控件,textfield正在和用戶交互,這時(shí)的它就是FirstResponder。 resignFirstResponder的意思是放棄第一響應(yīng)者,即textfield不再和用戶進(jìn)行交互,那么此時(shí)的textfield也不會(huì)獲得焦點(diǎn),這樣鍵盤就自然而然的消失了。

13)關(guān)聯(lián)Action
選中第一個(gè)text field,打開connections inspector,下圖中的第6個(gè)圖標(biāo)(最右邊的一個(gè)圖標(biāo))

找到connections inspector中的“Did End On Exit”方法,鼠標(biāo)移到它右邊的小圓圈,此時(shí)小圓圈中出現(xiàn)一個(gè)加號(hào)

按住鼠標(biāo)左鍵不放,拖動(dòng)到File's Owner上放開鼠標(biāo),此時(shí)一個(gè)小窗口會(huì)彈出,會(huì)顯示File's Owner所擁有的Action

選中textFieldDoneEditing,這樣“Did End On Exit”就和textFieldDoneEditing方法關(guān)聯(lián)起來了

在此運(yùn)行程序看看效果,當(dāng)在第一個(gè)text field中輸入完文字后,點(diǎn)虛擬鍵盤上的“return”按鈕,鍵盤消失了。


但是第二個(gè)textfield調(diào)用的是數(shù)字鍵盤,沒有“return”鍵,那要如何隱藏鍵盤呢?一種方式是再次使第一個(gè)textfield獲得焦點(diǎn),然后調(diào)出一般的虛擬鍵盤,點(diǎn)擊“return”,隱藏鍵盤,但是這種方法過于繁瑣且不切實(shí)際,如果我們沒有第一個(gè)textfield呢?那豈不是很悲催了?好在事情沒有那么糟糕,我們使用另一種方法使鍵盤消失,當(dāng)我們點(diǎn)擊屏幕上任何空白的地方時(shí)(包括ImageView和Label這些非活動(dòng)控件,即靜態(tài)控件),使鍵盤消失,這個(gè)操作相對(duì)簡(jiǎn)單,且可行性較高。

14)實(shí)現(xiàn)原理
先看下圖Objects

這是一個(gè)控件布局的樹形圖,我們添加的所有控件都是放在一個(gè)根View上面的,這個(gè)View是不可見的,但是它充滿了整個(gè)iphone屏幕,我們要做的就是寫一個(gè)Action,希望能夠使這個(gè)View所攜帶的一個(gè)event調(diào)用這個(gè)Action從而達(dá)到隱藏鍵盤的目的。但是這個(gè)根View的類型是UIView
(identity inspector)
UIView是沒有event的,這樣就更無法和Action關(guān)聯(lián),因此我們需要把根View的類型UIView改成UIControl,UIControl是UIView的子類,它包含所有UIView的特性,且里面有我們所需要的event,所以這樣的改變是非常合理且可行的。

選中Objects中的根View,在identity inspector中,將UIView改成UIControl。

Objects中的類型也隨之改變

15)創(chuàng)建另一個(gè)Action:backgroundTap
BIDViewController.h

- (IBAction)backgroundTap:(id)sender;

BIDViewController.m

- (IBAction)backgroundTap:(id)sender{    [nameField resignFirstResponder];    [numberField resignFirstResponder];}

16)關(guān)聯(lián)Action
選中根Control,切換到connections inspector,因?yàn)槲覀兿M氖屈c(diǎn)擊任何地方,鍵盤都會(huì)隱藏,所以我們選中Touch Down event

按住鼠標(biāo)左鍵拖到File's Owner,選擇backgroundTap action,關(guān)聯(lián)完畢。

再次編譯運(yùn)行程序,在第二個(gè)textfield中輸入數(shù)字,點(diǎn)擊屏幕上的任何地方,虛擬數(shù)字鍵盤消失

至此,所有的功能開發(fā)完畢。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩av手机在线免费观看 | 日本一级黄色大片 | 九草网 | 国产精品亚洲一区二区三区在线观看 | 97黄色网 | 男人久久天堂 | 亚洲一区二区中文 | 欧美精品在线免费观看 | 亚洲免费观看视频 | 免费看一级视频 | 92自拍视频| 韩国精品一区二区三区四区五区 | 精品国产一区二区三区在线观看 | 91精品国产综合久久男男 | 好吊色欧美一区二区三区四区 | www国产成人免费观看视频,深夜成人网 | 国内成人自拍视频 | 国产精品久久久久久久久久东京 | a集毛片 | 色综合久久99 | 91久久久久久 | 色av成人天堂桃色av | 国产在线看一区 | 成年人黄色免费电影 | 国产精品久久久久久久久久久久午夜 | 中文字幕综合在线观看 | 久久不射电影 | 精品二区在线观看 | 一级黄色影院 | 久久视频精品 | 国产日韩一区二区三区在线观看 | 久久91精品国产91久久yfo | 欧美成人免费在线视频 | 哪里可以看免费的av | 日本一区二区视频在线观看 | 久久草在线视频免费 | 一级免费在线 | 在线免费亚洲 | 国产精品久久久久久婷婷天堂 | 在线成人看片 | 草妞视频 |