UIView编程体验(一)
盡管這不是一個(gè)新的話題,但是實(shí)際上UIView是很多控件的基礎(chǔ)類,而且界面的布局基本是基于UIView來(lái)的,當(dāng)然我們也可以使用CGLayer,本文僅列舉一些個(gè)人在使用UIView過(guò)程中的經(jīng)驗(yàn)和大家分享。大部分的內(nèi)容來(lái)源于UIView Programming Guide,這個(gè)guide大家可以在xcode的幫助文檔里面查到也可以在蘋(píng)果的官網(wǎng)中找到。
?
首先說(shuō)說(shuō)Interface Builder. 在創(chuàng)建一個(gè)UIView的時(shí)候,我們往往會(huì)創(chuàng)建一個(gè)UIViewController,這使用了MVC模式,在controller里面實(shí)現(xiàn)業(yè)務(wù)邏輯,和model以及用戶界面打交道。在xcode的創(chuàng)建UIViewController的向?qū)Ю锩婵梢怨催xWith Xib for user interface來(lái)創(chuàng)建一個(gè)xib文件,Xib可以被interface builder打開(kāi),之所以需要這個(gè)文件主要是為了降低用程序來(lái)控制頁(yè)面控件的代碼量,比如如果你需要一個(gè)UILabel,并且把它放在頁(yè)面上部,如果你用Interface Builder你需要做的是將一個(gè)Label控件從Object Library里面拖到你想要的位置,如果用代碼,則你需要用UILabel的initWithFrame設(shè)置你要放置該控件的位置,然后使用addSubView將其加入到parent view之中:
UILabel*?titleLabel?=[UILabel?alloc]?initWithFrame?:CGRectMake(x,?y,?width,?height);?[self.view?addSubView?:?titleLabel]; ?
?
在Interface Builder的另一個(gè)要完成的事情是將你所拖放到界面里的控件和UIViewController里面的代碼綁定起來(lái),其中包含兩種連接,第一種是將UIViewController里面的成員變量和界面上的控件綁定,比如在IB中加入了一個(gè)label,現(xiàn)在為了在controller里面使用這個(gè)label,我們需要:
1. 在UIViewController里面新增一個(gè)UILabel成員.
2.添加@property(nonatomic, retain) UILabel* wordLabel; 在.m文件里面增加@synthesize wordLabel
3.為這個(gè)property增加IBOutlet,我單獨(dú)把這一步和第二步分開(kāi),一般的類的property我們并不需要這個(gè)IBOutlet,但是如果我們需要在Interface Builder里面的控件和類里面的某個(gè)元素關(guān)聯(lián)并出現(xiàn)在InterfaceBuilder里面我們就需要這個(gè)關(guān)鍵字?@property(nonatomic, retain) IBOutlet UILabel* wordLabel;
4. 回到interfacebuilder,點(diǎn)選File's Owner,按住control鍵鼠標(biāo)拖動(dòng)到label控件上松開(kāi),無(wú)論你拖到ui窗體上面的label控件或者左邊樹(shù)狀控件圖上的Label控件都可以,這時(shí)會(huì)彈出一個(gè)黑色的小窗口,里面出現(xiàn)了wordlabel,也就是我們剛剛加入的那個(gè)property,選擇它,控件就綁定好了,這時(shí)UIViewController就知道其成員wordlabel和這個(gè)label控件是關(guān)聯(lián)的了。
5.Interface Builder另一種綁定是綁定控件的事件到controller里面的代碼,我們現(xiàn)在拖動(dòng)一個(gè)button到界面上,然后回到UIViewController中。在.h文件中聲明一個(gè)方法 -(IBAction) onWordChangeClicked:(id) sender; 在.m中寫(xiě)個(gè)簡(jiǎn)單的該方法的實(shí)現(xiàn):
?
-(IBAction)?onWordChangeClicked:(id)?sender{
??wordLabel.text=@"Changed";
}
?這個(gè)方法和其他方法不同的是IBAction,正是這個(gè)返回值告訴Controller這個(gè)方法是用來(lái)綁定IB里面的控件的
接下來(lái)我們把這段代碼和剛拖到頁(yè)面上的button綁定起來(lái)。 回到interface builder,選中button控件,按住control鍵,拖動(dòng)到file's owner放開(kāi),彈出的小黑框出現(xiàn)了我們剛輸入的方法,選中它以關(guān)聯(lián)控件和其click事件,不過(guò)這里既然是移動(dòng)設(shè)備我們不能叫click事件,準(zhǔn)確的名稱是Touch Up Inside事件,當(dāng)你觸摸這個(gè)button的時(shí)候觸發(fā)。
OK, done!運(yùn)行一下看看效果吧?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/cyberknightgic/archive/2011/11/04/2236277.html
總結(jié)
以上是生活随笔為你收集整理的UIView编程体验(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《黎明杀机》恋爱游戏Steam特别好评
- 下一篇: android 之数据存储(IO)