你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS自適應布局之Masonry(一)

iOS自適應布局之Masonry(一)

編輯:IOS開發綜合

前言

iPhone 5之前我們對應用布局停留在3.5寸一個屏幕的階段,當時的安卓屌絲們是多麼的羨慕iOS開發,不會被大量的屏幕適配所煩惱。隨著iPhone產品的迭代,逐漸出現4寸、4.7寸、5.5寸….,你們說,iphone10+會有多少寸?O(∩_∩)O~

簡介

正因為上面說的那樣,屏幕的尺寸逐步增多,還沿用以前的方法布局顯然是不行的,這時候為布局引進新的結局辦法NSAutoLayout,但蘋果提供的比較復雜麻煩,所以就有人在此基礎上進行封裝,而提供一種高效的框架—-Masonary

安裝

如何安裝框架?還是建議用CocoaPods,這裡有我之前寫的CocoaPods相關用法

         pod 'Masonry'

使用說明

使用參數功能說明表

這裡寫圖片描述

開撸

1.居中顯示一個View,並能時刻保持比屏幕的寬和高少60像素

UIView *view1=[[UIView alloc]init];

view1.backgroundColor=[UIColor brownColor];

[self.view addSubview:view1];

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.center.equalTo(self.view);
    make.top.equalTo(self.view).with.offset(30);
    make.left.equalTo(self.view).with.offset(30);
    make.bottom.equalTo(self.view).with.offset(-30);
    make.right.equalTo(self.view).with.offset(-30);
}];

這裡寫圖片描述

這裡需要注意的是:控件用Masonry約束的時候必須先將控件用addSubview加載到父視圖中才能進行約束,不然就會造成崩潰。

Masonry中有三個函數

(NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block; (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block; (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;

mas_makeConstraints 只負責增加約束,當對同一個控件兩次調用這個函數就會造成崩潰。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPm1hc191cGRhdGVDb25zdHJhaW50cyC4/NDC1LzK+KOs08NtYXNfbWFrZUNvbnN0cmFpbnRztqjS5dS8yvjWrrrzo6y/ydLU08O4/NDC1LzK+L340NCyubPkPC9wPg0KPHA+bWFzX3JlbWFrZUNvbnN0cmFpbnRzINf308OxyL3PsNS1wKOsyb6z/daux7C21LjDv9i8/rTm1Nq1xMv509DUvMr4o6zWu7GjwfRibG9ja7qvyv3A78PmtcTX7tDC1LzK+KGjPGJyIC8+DQrJz8PmtcQ8L3A+DQo8cHJlIGNsYXNzPQ=="brush:java;"> make.center.equalTo(self.view); make.top.equalTo(self.view).with.offset(30); make.left.equalTo(self.view).with.offset(30); make.bottom.equalTo(self.view).with.offset(-30); make.right.equalTo(self.view).with.offset(-30);

你是不是想更優雅,更棒一點呢?可以這樣:

UIEdgeInsets padding = UIEdgeInsetsMake(30, 30, -30, -30);
 make.center.equalTo(self.view);

 make.top.equalTo(self.view).with.offset(padding.top);

 make.left.equalTo(self.view).with.offset(padding.left);

 make.bottom.equalTo(self.view).with.offset(padding.bottom);

  make.right.equalTo(self.view).with.offset(padding.right); 

我們還可以簡化為

make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10)); 

也可以這樣:

  make.top.left.bottom.and.right.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10)); 
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved