封裝.抽取分類(lèi)思想

1.分析界面,界面非常簡(jiǎn)單,界面內(nèi)容固定,直接使用xib來(lái)描述

注意:使用xib要先綁定類(lèi),還需要連線(xiàn)

如果是在創(chuàng)建類(lèi)的同時(shí)也創(chuàng)建xib就可以省略上面操作, ? 系統(tǒng)自動(dòng)幫我們做了

2.登錄注冊(cè)界面分析

復(fù)雜界面(子控件非常多)

1.劃分結(jié)構(gòu)(頂部,中間,底部)

2.創(chuàng)建占位視圖,占據(jù)結(jié)構(gòu)位置

3.一個(gè)結(jié)構(gòu)一個(gè)結(jié)構(gòu)做

3.把每一塊結(jié)構(gòu)都單獨(dú)封裝起來(lái), ? 為什么?

方便以后需求變更,我們來(lái)改代碼

封裝的時(shí)候可以考慮兩點(diǎn):

1.界面是固定不變的,直接用xib來(lái)封裝

2.如果該結(jié)構(gòu)以后可能只是在當(dāng)前界面位置變動(dòng),可以把結(jié)構(gòu)模塊封裝到一個(gè)view里面(占位思想)

4.把登錄模塊封裝到xib

4.1 圖片圓角處理

1.自己給原來(lái)的圖片設(shè)置圓角

self.loginButton.layer.cornerRadius = 5;

self.loginButton.layer.masksToBounds = YES;

//self.loginButton.clipsToBounds = YES;

2.用美工給的帶圓角的圖片,不過(guò)要設(shè)置可拉伸區(qū)域

為什么,圖片會(huì)被拉伸的很難看(不規(guī)則的圖片可能設(shè)置不成功)

bgImage = [bgImagestretchableImageWithLeftCapWidth:bgImage.size.width*0.5topCapHeight:bgImage.size.height*0.5];

在哪里設(shè)置?awakeFromNib

// 如果執(zhí)行了awakeFromNib,說(shuō)明當(dāng)前控件在xib中所有屬性全部設(shè)置好

// 只要在awakeFromNib里面,就能獲取到xib中所有屬性

5.設(shè)置輸入文本框

5.1文本框有背景,怎么設(shè)置?

先設(shè)置一個(gè)ImageView,設(shè)置圖片為背景圖片

5.2 ImageView里面xib不能拖進(jìn)去子控件?怎么辦?

弄一個(gè)View,把ImageView放進(jìn)去,View的大小正好是兩個(gè)輸入框的大小

5.3 在view里面拖進(jìn)去兩個(gè)UITextField 等分view

5.4 設(shè)置占位文字

6.抽取frame分類(lèi)

6.1為什么抽取這個(gè)分類(lèi)?

項(xiàng)目中很多地方都要用到frame.origin.x/y ? ?frame.size.width / hight 我們不能直接修改,要先定義屬性=frame.然后修改 ?再賦值回去很麻煩

6.2 給誰(shuí)抽取分類(lèi)?

給UIView抽取分類(lèi),所有的控件都能用了

6.3 怎么讓自己的分類(lèi)成員變量名稱(chēng)和其它人的名稱(chēng)不會(huì)重復(fù)

給成員變量名稱(chēng)加上類(lèi)前綴

7.自定義快速登錄視圖

7.1 使用xib搭建界面

7.2 快速登錄按鈕需要自定義,為什么?

需求要求按鈕內(nèi)部圖片在上, 文字在下,系統(tǒng)的是圖片在左,文字在右

7.3 怎么自定義按鈕

新建一個(gè)類(lèi)繼承UIButton ? 在layoutSubviews里面修改尺寸

7.4 運(yùn)行發(fā)現(xiàn) 文字不能顯示完全,為什么?

label的尺寸比文字的尺寸小,顯示不完全

7.5 怎么解決

1.計(jì)算文字的尺寸,讓label的尺寸和文字尺寸一樣就可以了

2.讓label尺寸自適應(yīng)sizeToFit

- (void)layoutSubviews

{

// 一定要調(diào)用layoutSubviews

[superlayoutSubviews];

self.imageView.xmg_centerX=self.xmg_width*0.5;

self.imageView.xmg_y=0;

// 設(shè)置label尺寸

// 計(jì)算文字尺寸 設(shè)置label尺寸

//??? CGFloat w = [self.titleLabel.text sizeWithFont:[UIFont systemFontOfSize:18]].width;

//??? self.titleLabel.xmg_width = w;

[self.titleLabelsizeToFit];

// 設(shè)置中心點(diǎn)

self.titleLabel.xmg_centerX=self.xmg_width*0.5;

self.titleLabel.xmg_y=self.xmg_height-self.titleLabel.xmg_height;

}

8.xib注意點(diǎn)

8.1 加載xib的時(shí)候,要不要設(shè)置xib的frame?

要如果一個(gè)控件通過(guò)xib加載,默認(rèn)跟xib一樣尺寸

1.如果一個(gè)View通過(guò)xib加載,需要再次設(shè)置frame

8.2 在哪里設(shè)置?在viewDidLoad設(shè)置子控件的frame,好不好?

不可以,viewDidLoad里面控制器View的子控件的尺寸還沒(méi)有設(shè)置,viewDidLayoutSubviews會(huì)重新調(diào)整內(nèi)部子控件的位置

viewDidLayoutSubviews:控制器的方法

layoutSubview:控件的方法

8.3 怎么拿到xib描述的View 設(shè)置約束?

1. 定義成員變量,賦值

2.xib的view都添加到對(duì)應(yīng)的父控件中,我們可以從對(duì)應(yīng)的父控件的subviews數(shù)組里面取

XTLoginRegisterView*registerView =_middleView.subviews.lastObject;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,733評(píng)論 1 14
  • 今天開(kāi)始讀《每天最重要的兩小時(shí)》。書(shū)中第一章提到了幾個(gè)有意思的概念: "抉擇點(diǎn)":一項(xiàng)任務(wù)結(jié)束另一項(xiàng)任務(wù)尚未結(jié)束的...
    Tina說(shuō)閱讀 221評(píng)論 0 0
  • 4.21號(hào)晚上九點(diǎn)多來(lái)的北京,羅總接的我們,一下子就過(guò)來(lái)三個(gè)多月,今天去了一下籃堡,感覺(jué)昨天還在藍(lán)堡樓下咖啡廳跟龔...
    楊奶茶閱讀 161評(píng)論 8 4
  • 嗨同學(xué)!別在自己的世界里做白天鵝了! 一朋友,把自己硬生生的整成了蛇精臉,而且白的慎人,遠(yuǎn)處一看,標(biāo)準(zhǔn)美女,近處...
    愛(ài)讀書(shū)的喵123閱讀 297評(píng)論 1 2

友情鏈接更多精彩內(nèi)容