使用masonry手寫約束

在iOS開發過程當中,手寫contraints是很是痛苦的一件事情,每每那麼一丟丟功能要寫大量的代碼,很是容易發生錯誤,而且很是不方便調試。因此只有在不得以的狀況下才採用手工方式寫contraints,通常都在Storyboard中完成,但Storyboard也是一個坑爹的東東,特別是在SVN協做工做時各類問題不甚其煩;可是後來知道了Masonry,體驗了一段時間,很是好用,自此不多再使用storyboard寫UI了。spa

安裝Masonry

安裝使用Masonry的方式不止一種,但比較推薦的方式是使用CocoaPods來管理,具體的作法是在Podfile中添加一句pod 'Masonry',固然也能夠指定版本:pod 'Masonry', '~> 0.6.1';對於Masonry這種第三方庫,可能在任何頁面中都會涉及到,因此最好在prefix pch文件中添加#import "Masonry.h",默認狀況下,Masonry中的相關資源都有mas前綴,譬如mas_makeConstraints方法、mas_left屬性等等,若是不想使用mas前綴,則能夠在#import "Masonry.h"以前能夠先定義一個宏#define MAS_SHORTHAND,但不推薦這樣作,由於mas_left比left更不容易與其餘的資源名稱衝突。調試

Masonry經常使用技巧

同一行等比例顯示多個view

UIView *redView = ({
    UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor redColor];
    view;
});
[self.view addSubview:redView];
    
UIView *yellowView = ({
    UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor yellowColor];
    view;
});
[self.view addSubview:yellowView];
    
UIEdgeInsets viewInsets = UIEdgeInsetsMake(100, 10, 0, 10);
    
[redView mas_makeConstraints:^(MASConstraintMaker *make) {
    UIView *superView = self.view;
    make.left.equalTo(superView).insets(viewInsets);
    make.right.equalTo(yellowView.mas_left).offset(-10);
    make.top.equalTo(superView).insets(viewInsets);
    make.width.equalTo(yellowView.mas_width).offset(0);
    make.height.equalTo(@100);
}];
    
[yellowView mas_makeConstraints:^(MASConstraintMaker *make) {
    UIView *superView = self.view;
    make.right.equalTo(superView).insets(viewInsets);
    make.left.equalTo(redView.mas_right).offset(10);
    make.top.equalTo(superView).insets(viewInsets);
    make.width.equalTo(redView.mas_width).offset(0);
    make.height.equalTo(@100);
}];

效果以下:code

                        

相關文章
相關標籤/搜索