AutoLayout 使用技巧——自動布局, 系統(tǒng)自帶的類的使用

使用系統(tǒng)自帶類進行自動布局必須理解的一個公式

+(instancetype)constraintWithItem:(id)view1 
                        attribute:(NSLayoutAttribute)attire
                        relatedBy:(NSLayoutRelation)relation 
                            toItem:(id)view2 
                         attribute:(NSLayoutAttribute)attr2 
                       multiplier:(CGFloat)multiplier constant:(CGFloat)c;


** 解釋:** 某個 view1 的 attribute1 等于(小于或等于/大于或等于)某個 view2 的 attribute2 的 multiplier 倍 加上 constant

** 簡明公式:** view1.attribute1 = view2.attribute2 * multiplier + constant;

說明:multiplier 這個屬性可以用來進行倍數(shù)的放大和縮小
      如果你想設(shè)置的約束里不需要第二個view酬荞,要將第四個參數(shù)設(shè)為nil垒手,第五個參數(shù)設(shè)為NSLayoutAttributeNotAnAttribute
舉例: 
[NSLayoutConstraint constraintWithItem:view1  
                             attribute:NSLayoutAttributeLeft  
                             relatedBy:NSLayoutRelationEqual  
                                toItem:view2  
                             attribute:NSLayoutAttributeRight  
                            multiplier:1  
                              constant:10];
翻譯過來就是:view1的左側(cè)诱篷,在此叠,view2的右側(cè),再多10個點康二,的地方漓骚。

系統(tǒng)類的使用

  1. 使用注意點
    1.1. 要對子視圖進行布局的時候, 子視圖必須先添加到父視圖的內(nèi)部
    [self.view addSubview:myView];
    1.2. 取消子視圖的 Autoresizing

練習1.
將 myView 設(shè)置為 距離 self.view 的四周的間隙為 10


Snip20151029_7.png
//居中 的寫法
 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:btn  attribute:NSLayoutAttributeCenterX  relatedBy:NSLayoutRelationEqual  toItem:self.view  attribute:NSLayoutAttributeCenterX  multiplier:1  constant:0]];
     
     
//距離底部20單位
//注意NSLayoutConstraint創(chuàng)建的constant是加在toItem參數(shù)的废境,所以需要-20。
[self.view addConstraint:[NSLayoutConstraint  constraintWithItem:btn  attribute:NSLayoutAttributeBottom  relatedBy:NSLayoutRelationEqual  toItem:self.view  attribute:NSLayoutAttributeBottom  multiplier:1  constant:-20]];
  
//定義高度是父View的三分之一
[self.view addConstraint:[NSLayoutConstraint  constraintWithItem:btn  attribute:NSLayoutAttributeHeight  relatedBy:NSLayoutRelationEqual  toItem:self.view  attribute:NSLayoutAttributeHeight  multiplier:0.3  constant:0]];
 // 關(guān)系枚舉
     typedef NS_ENUM(NSInteger, NSLayoutRelation) {
        NSLayoutRelationLessThanOrEqual = -1,                           小于等于
        NSLayoutRelationEqual = 0,                                      等于
        NSLayoutRelationGreaterThanOrEqual = 1,                         大于等于
     };
     
     
     // 約束的枚舉
     typedef NS_ENUM(NSInteger, NSLayoutAttribute) {
     NSLayoutAttributeLeft = 1,                                         左側(cè)
     NSLayoutAttributeRight,                                            右側(cè)
     NSLayoutAttributeTop,                                              上方
     NSLayoutAttributeBottom,                                           下方
     NSLayoutAttributeLeading,                                          前面(首部)
     NSLayoutAttributeTrailing,                                         后面(尾部)
     NSLayoutAttributeWidth,                                            寬
     NSLayoutAttributeHeight,                                           高
     NSLayoutAttributeCenterX,                                          中心x(x軸中心)
     NSLayoutAttributeCenterY,                                          中心y(y軸中心)
     NSLayoutAttributeBaseline,                                         文本底標線 (通常是指視圖的底部放文字的地方)
     NSLayoutAttributeLastBaseline = NSLayoutAttributeBaseline,
     NSLayoutAttributeFirstBaseline NS_ENUM_AVAILABLE_IOS(8_0),
     
     
     NSLayoutAttributeLeftMargin NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeRightMargin NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeTopMargin NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeBottomMargin NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeLeadingMargin NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeTrailingMargin NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeCenterXWithinMargins NS_ENUM_AVAILABLE_IOS(8_0),
     NSLayoutAttributeCenterYWithinMargins NS_ENUM_AVAILABLE_IOS(8_0),
     
     NSLayoutAttributeNotAnAttribute = 0                                沒有約束
     };
     
     NSLayoutAttributeLeft/NSLayoutAttributeRight 和NSLayoutAttributeLeading/NSLayoutAttributeTrailing的區(qū)別是left/right永遠是指左右贰盗,而leading/trailing在某些從右至左習慣的地區(qū)會變成许饿,leading是右邊,trailing是左邊舵盈。(大概是⊙﹏⊙b)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陋率,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秽晚,更是在濱河造成了極大的恐慌瓦糟,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赴蝇,死亡現(xiàn)場離奇詭異菩浙,居然都是意外死亡,警方通過查閱死者的電腦和手機句伶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門芍耘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熄阻,你說我怎么就攤上這事斋竞。” “怎么了秃殉?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵坝初,是天一觀的道長。 經(jīng)常有香客問我钾军,道長鳄袍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任吏恭,我火速辦了婚禮拗小,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘樱哼。我一直安慰自己哀九,他們只是感情好剿配,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阅束,像睡著了一般呼胚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上息裸,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天蝇更,我揣著相機與錄音,去河邊找鬼呼盆。 笑死年扩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的访圃。 我是一名探鬼主播常遂,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挽荠!你這毒婦竟也來了克胳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤圈匆,失蹤者是張志新(化名)和其女友劉穎漠另,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跃赚,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡笆搓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了纬傲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片满败。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖叹括,靈堂內(nèi)的尸體忽然破棺而出算墨,到底是詐尸還是另有隱情,我是刑警寧澤汁雷,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布净嘀,位于F島的核電站,受9級特大地震影響侠讯,放射性物質(zhì)發(fā)生泄漏挖藏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一厢漩、第九天 我趴在偏房一處隱蔽的房頂上張望膜眠。 院中可真熱鬧,春花似錦、人聲如沸宵膨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柄驻。三九已至狐树,卻和暖如春焙压,著一層夾襖步出監(jiān)牢的瞬間鸿脓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工涯曲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留野哭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓幻件,卻偏偏與公主長得像拨黔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绰沥,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

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