iOS 4:掌握AutoLayout

如何進行接口設(shè)計

  • 首先要考慮最終要實現(xiàn)的功能,滿足此功能
  • 考慮到未來再重復使用此功能的伸縮性积蔚,傳遞對應(yīng)的參數(shù)進去
  • 使外部使用此接口的方式开泽,盡可能的簡便酌畜,接口內(nèi)部的實現(xiàn)對外界屏蔽
  • 檢驗使用此接口的細節(jié),在接口內(nèi)部的參數(shù)與方法命名上通俗易懂谣旁,例如:add床佳、remove,imageName(覆蓋榄审,第二次調(diào)用時需要對前一次進行清除)等等

消息循環(huán)

  • 例如對于一個UIScrollView控件的多種屬性修改砌们,并不是設(shè)置了就立即調(diào)到相應(yīng)的方法中進行修改,而是在一次循環(huán)中收集所有的修改搁进,在沒有外部干擾的情況下浪感,方法結(jié)束后進行一次性的更改
  • 外部干擾,例如touchesBegan饼问,這是UIView的共有屬性

UIView的3種初始化方法

在學習swift的時候篮撑,一直以來清楚為什么會有initWithCoder的存在,現(xiàn)在清楚了匆瓜。
  • init,會調(diào)用initWithFrame:(CGRect)frame。
  • initWithFrame:(CGRect)frame驮吱,傳遞frame參數(shù)來構(gòu)造UIView茧妒。
  • initWithCoder:(NSCoder *)aDecoder,在使用xib\storyboard的時候調(diào)用左冬,是對xib\storyboard文件的解析桐筏。在xib\storyboard文件中進行了控件的創(chuàng)建以及設(shè)置,initWithCoder相當于一個解析器拇砰。
  • 在這里講一個對比的函數(shù):awakeFromNib(storyboard的前身也是nib)梅忌,字面意思是從Nib中醒來,與initWithCoder不同的地方在于:initWithCoder只是完成了控件的創(chuàng)建除破,awakeFromNib是在完成了連線的賦值之后進行調(diào)用牧氮;awakeFromNib,無論是自創(chuàng)建控件還是從xib\storyboard中創(chuàng)建瑰枫,都會調(diào)用踱葛。
雙擊屏幕中心可以滿屏播放.png

框架

  • 框架的升級問題:當一個框架進行了升級之后,之前的接口可能會發(fā)生改變光坝,那么任何使用該接口的app可能會發(fā)生bug尸诽,那么現(xiàn)在問題來了,蘋果更新的iOS系統(tǒng)盯另,那么舊有的app都不能使用了嗎性含?
  • 有時候敲代碼的時候,會發(fā)現(xiàn)有些方法中間劃了紅線鸳惯,這是被蘋果遺棄的iOS舊系統(tǒng)中的方法商蕴,仍舊能用,但是蘋果不推薦使用悲敷。
  • 在我們平常設(shè)計框架并以后更新的時候究恤,在升級新接口的同時,也可以保留舊有的接口后德,增加關(guān)鍵字如下:
//objc
@property (nonatomic, strong) UIColor *otherColor NS_DEPRECATED_IOS(2_0,3_0);

NSTimer

  • 創(chuàng)建一個定時器
//objc
//創(chuàng)建了定時器部宿,但是并未啟動
[NSTimer timeWithTimeInterval:1.5 target:self selector:@selector(nextPage) userInfo:nil, repeats:YES];

//創(chuàng)建并默認啟動了定時器
self。timer = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval) target:(id) selector:(SEL) userInfo:(id) repeats:(BOOL)];

//啟動定時器
[self.timer fire]
//關(guān)閉定時器
[self.timer invalidate]

  • 線程
    • 正常情況下瓢湃,在單核機器中理张,一個app是運行在一個主線程中,但是當設(shè)置定時器以后绵患,如果用戶界面發(fā)生了交互雾叭,會暫時屏蔽定時器的走動。
    • 究其原因落蝙,是因為定時器的優(yōu)先級較低织狐,通過設(shè)置NSRunLoop mainRunLoop 通用模式暂幼,使其與UI有同層的優(yōu)先級。

屏幕適配的發(fā)展歷史移迫,重要:AutoLayout

小碼哥講解了自動布局發(fā)展的歷史旺嬉,在iOS系統(tǒng)初期,使用的是代碼的方式厨埋;中期使用了autoResizing方式邪媳;現(xiàn)在使用AutoLayout。但是AutoLayout是將代碼簡化到了屬性的設(shè)置中荡陷,使得autoLayout比較方便雨效,但是自定義控件使用autoLayout代碼的方式仍舊特別麻煩。之前接觸過autoLayout代碼的設(shè)置方式废赞,覺得自己天資愚笨徽龟,就放棄了,原來這個都不受大家待見蛹头。
  • 針對不同版本的操作系統(tǒng) 以及 不同大小的屏幕尺寸進行適配顿肺。
  • 使用AutoLayout之后,不推薦使用frame \ bounds \ center渣蜗,有時設(shè)置會起作用屠尊,有時候并不起作用。忘掉frame耕拷,擁抱aotuLayout讼昆。
  • autoResizing與autoLayout的區(qū)別是:autoResizing只能對父子控件進行位置與大小設(shè)置,而autoLayout既可以作用于父子控件骚烧,也可以作用于兄弟控件浸赫,它可以作用于任何兩個控件之間。
  • 使用autoResizing的前提是:需要關(guān)閉autoLayout功能赃绊。
  • autoLayout的核心概念:參照既峡、約束。對于一個控件碧查,給其一個參照的控件运敢,然后在這兩者之間設(shè)置約束。
  • 除了UIViewController中的控件可以拖線之外忠售,控件間的約束也可以拖線传惠,然后可以直觀的對約束變量進行設(shè)置。

視網(wǎng)膜屏幕 retina高清屏幕

  • 像素與點的認識:點是面向程序員的稻扬,像素是面向用戶的卦方,像素與點之間是倍數(shù)關(guān)系,方便程序員進行多種iOS尺寸的設(shè)計泰佳。
Ember Library Mediator.png

UITextField

  • UITextField 的父類是 UIScrollView
  • UITextFied 中的長度設(shè)置: Less Than or Equal \ Equal \ Greater Than or Equal盼砍,當UITextField中的text會變動尘吗,設(shè)置Less Than or Equal 會設(shè)置最大的長度,在這個范圍內(nèi)隨著text變動而縮小浇坐。
  • 例如:UIView中裝著子控件UITextField摇予,UIView隨著UITextField中text的變化,而進行伸縮吗跋。設(shè)置UITextField與UIView底部的距離即可,也可以通過設(shè)置UIView的底部 = UITextField 的底部 + 20

tips

  • 有時候程序運行出現(xiàn)這樣的BUG CUICatalog:Unvalid asset name supplied: (null)宁昭,是因為在[UIImage imageNamed:name]傳遞的參數(shù)name = null
  • Masonry 第三方框架跌宛,使代碼寫約束的過程變得更加方便
  • drawRect方法,是控件共有的一種方法
  • UIView中自控件的動畫設(shè)置积仗,主意增加layoutIfNeeded
//objc
[UIView animateWithDurationn:2.0 animations: ^{
    [self.blueView layoutIfNeeded];
}];
  • arc4random_uniform(max) 方法產(chǎn)生一個隨機值疆拘,不大于max
  • 讓subviews數(shù)組中的所有對象都執(zhí)行同樣的方法
//objc
[self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寂曹,隨后出現(xiàn)的幾起案子哎迄,更是在濱河造成了極大的恐慌,老刑警劉巖隆圆,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漱挚,死亡現(xiàn)場離奇詭異,居然都是意外死亡渺氧,警方通過查閱死者的電腦和手機旨涝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵揍,“玉大人蟋滴,你說我怎么就攤上這事杏糙。” “怎么了弧腥?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長潮太。 經(jīng)常有香客問我管搪,道長,這世上最難降的妖魔是什么消别? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任抛蚤,我火速辦了婚禮,結(jié)果婚禮上寻狂,老公的妹妹穿的比我還像新娘岁经。我一直安慰自己,他們只是感情好蛇券,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布缀壤。 她就那樣靜靜地躺著樊拓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塘慕。 梳的紋絲不亂的頭發(fā)上筋夏,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音图呢,去河邊找鬼条篷。 笑死,一個胖子當著我的面吹牛蛤织,可吹牛的內(nèi)容都是我干的赴叹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼指蚜,長吁一口氣:“原來是場噩夢啊……” “哼乞巧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摊鸡,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤绽媒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后免猾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是辕,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年掸刊,在試婚紗的時候發(fā)現(xiàn)自己被綠了免糕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡忧侧,死狀恐怖石窑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚓炬,我是刑警寧澤松逊,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站肯夏,受9級特大地震影響经宏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驯击,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一烁兰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徊都,春花似錦沪斟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽择吊。三九已至,卻和暖如春槽奕,著一層夾襖步出監(jiān)牢的瞬間几睛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工粤攒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留所森,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓夯接,卻偏偏與公主長得像必峰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钻蹬,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 前言 iPhone自誕生以來粒蜈,隨著其屏幕尺寸不斷的多樣化顺献,屏幕適配的技術(shù)一直在發(fā)展更新。目前枯怖,iOS系統(tǒng)版本已經(jīng)更...
    VV木公子閱讀 15,397評論 24 170
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫注整、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,122評論 4 61
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,166評論 30 470
  • 數(shù)組在Kotlin中使用Array類來表示度硝。下面巴拉一下Kotlin數(shù)組和Java數(shù)組的區(qū)別肿轨。Java中的數(shù)組通常...
    釘某人閱讀 80,523評論 2 27
  • 真正難的是獨處時仍存善念 01 前幾天,小區(qū)業(yè)主微信群里蕊程,大家都在熱火朝天的討論著一件事椒袍,那就是隔壁單元的一位鄰居...
    菀彼青青閱讀 545評論 5 10