Masonry框架使用

autolayout通過代碼添加約束的方式有三種:

蘋果自帶的方式

VFL語言

Masonry框架

蘋果自帶的方式

  • 首先要禁止將autoresizingMask轉為對應約束的屬性,因為它會自動設置寬度和高度,與autolayout產生沖突
    • translatesAutoresizingMaskContrains = NO
  • 添加約束(和萬能公式有關)
    • 例如 【NSLayoutConstraints constraintsWithItem:紅色view attribute:寬度relatedBy:等于toItem: 藍色view attribute:寬度mutiplier: 乘以幾 constraints:加上一個固定的值
    • 約束方法代碼量大,約束條件不夠會報錯

VFL語言

  • Visual Format Language :可視格式化語言
  • 需要禁止將autoresizing的設置轉為對應約束的屬性
  • 水平方向
    • H:[cancleButton(72)-12-[acceptButton(50)]
    • cancleButton的寬度是72 ,acceptButton的寬度是50,兩個控件的水平間距為12
  • 垂直方向
    • V:[redView(50)]-20-|
    • redView的高度是50,距離右側父控件的距離是20
  • 局限性:有些功能實現不了,需要結合其他技術

Masonry

  • 通過代碼添加約束,一定要禁止掉translatesAutoresizingMaskIntoConstraints 這個屬性
  • 但是,由于框架內部已經幫我們禁止了這一屬性,我們可以不寫代碼
  • 調用:mas_makeConstraints:方法進行約束設置
  • make.top.equalTo(self.view.mas_top).multiplied(1.0).offset(20);
    • make:誰調用這個方法,就指誰
    • multiplied(1.0)可以不寫,默認就是乘以1
    • equalTo(self.view.mas_top)可以不寫,默認就是父控件
    • mas_equalTo(能把傳入的基本數據類型包裝成對象)
    • equalTo(不能把傳入的基本數據類型包裝成對象,但是導入兩個宏之后,就可以將基本數據類型轉成對象)
      • MAS_SHORTHAND
      • MAS_SHORTHAND_GLOBALS
  • updateContraints:更新約束
    • 特點:如果之前有這個約束會直接更新,如果沒有會添加新的約束
  • remakeConstraints:刪除之前所有的約束,添加新的約束
  • Masonry熟練使用后,會有一系列簡寫方式
    • make.top.and.left.offset(20);
    • make.top.left.offset(20);
    • make.edges.equalTo(self.view).insets(UIEdgeInsets(20,20,-20,-20,))
    • make.edges.insets(UIEdgeInsets(20,20,-20,-20))

補充:

  • 添加約束的原則

    • 如果是同層級的關系,要添加到父控件上
    • 如果不是同層級關系,要添加到最近的共同的父控件上去
    • 如果是父控件子控件的關系,要添加到層級較高的父控件上去
    • 控件添加到父控件以后,再設置約束
  • 約束的優先級

    • priority
    • 優先級越高的約束越先生效
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • (一)Masonry介紹 Masonry是一個輕量級的布局框架 擁有自己的描述語法 采用更優雅的鏈式語法封裝自動布...
    木易林1閱讀 2,385評論 0 3
  • Masonry是一個輕量級的布局框架,擁有自己的描述語法,采用更優雅的鏈式語法封裝自動布局,簡潔明了并具有高可讀性...
    3dcc6cf93bb5閱讀 1,826評論 0 1
  • [置頂]iOS - Masonry使用中的一些整理 標簽:iOS資源大全iOS常用方法iOS學習資料Masonry...
    DreamMakerSky閱讀 3,199評論 0 4
  • iOS_autoLayout_Masonry 概述 Masonry是一個輕量級的布局框架與更好的包裝AutoLay...
    指尖的跳動閱讀 1,195評論 1 4
  • 九天以西,靈山之巔,天界最頂級的三所學院之一,號稱天才的聚集地,“南無學院”。 八戒悟空抬頭望著那高聳入云...
    夢若君兮君若夢閱讀 659評論 0 0