日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS:Masonry练习详解

發布時間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS:Masonry练习详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Masonry練習詳解

添加約束的方式:
1.通過使用NSLayoutConstraints添加約束到約束數組中,之前必須設置translatesAutoresizingMaskIntoConstraints = NO,即取消自動布局; ? 2.通過使用MASConstraintMaker在block中添加約束,不需要再設置translatesAutoresizingMaskIntoConstraintst?屬性,block內部已經幫助完成; 約束的關系:

equalTo? <=======>? ?NSLayoutRelationEqual ? 等于

lessThanOrEqualTo? ?<======>??NSLayoutRelationLessThanOrEqual ? 小于或等于

greaterThanOrEqualTo?<=======> ?NSLayoutRelationGreaterThanOrEqual ?大于或等于

?

MASViewAttribute:視圖約束屬性

UIView/NSView 這兩個約束完全相同,都是view左邊大于等于label的左邊位置 make.left.greaterThanOrEqualTo(label); make.left.greaterThanOrEqualTo(label.mas_left); NSNumber給約束設置具體的值 <1>//width >= 200 && width <= 400 make.width.greaterThanOrEqualTo(@200); make.width.lessThanOrEqualTo(@400) <2>//creates view.left = view.superview.left + 10 make.left.lessThanOrEqualTo(@10) 代替NSNumber,使用原始的數據或者結構體設置約束數據 make.top.mas_equalTo(42); make.height.mas_equalTo(20); make.size.mas_equalTo(CGSizeMake(50, 100)); make.edges.mas_equalTo(UIEdgeInsetsMake(10, 0, 10, 0)); make.left.mas_equalTo(view).mas_offset(UIEdgeInsetsMake(10, 0, 10, 0)); ? 使用數組NSArray設置約束 make.height.equalTo(@[view1.mas_height, view2.mas_height]); make.height.equalTo(@[view1, view2]); make.left.equalTo(@[view1, @100, view3.right]); 使用優先級設置約束

.priorityHigh?<======>?UILayoutPriorityDefaultHigh ? ? 高優先級

.priorityMedium?<========>?between high and low ? ? ???介于高/低之間

.priorityLow?<=========>?UILayoutPriorityDefaultLow ? 低優先級

make.left.greaterThanOrEqualTo(label.mas_left).with.priorityLow(); make.top.equalTo(label.mas_top).with.priority(600); ? 使用MASCompositeConstraints添加約束 edges:邊緣 // make top, left, bottom, right equal view2 make.edges.equalTo(view2);// make top = superview.top + 5, left = superview.left + 10, // bottom = superview.bottom - 15, right = superview.right - 20 make.edges.equalTo(superview).insets(UIEdgeInsetsMake(5, 10, 15, 20)) // All edges but the top should equal those of the superview make.left.right.and.bottom.equalTo(superview); make.top.equalTo(otherView); ? size:大小 // make width and height greater than or equal to titleLabel make.size.greaterThanOrEqualTo(titleLabel)// make width = superview.width + 100, height = superview.height - 50 make.size.equalTo(superview).sizeOffset(CGSizeMake(100, -50)) ? center:中心 // make centerX and centerY = button1make.center.equalTo(button1)// make centerX = superview.centerX - 5, centerY = superview.centerY + 10 make.center.equalTo(superview).centerOffset(CGPointMake(-5, 10)) 有時候,你需要修改現有的約束,以動畫或刪除/替換約束。在砌體中有幾個不同的方法來更新約束。 1.使用設置References // in public/private interface @property (nonatomic, strong) MASConstraint *topConstraint; ... // when making constraints [view1 mas_makeConstraints:^(MASConstraintMaker *make) {self.topConstraint = make.top.equalTo(superview.mas_top).with.offset(padding.top);make.left.equalTo(superview.mas_left).with.offset(padding.left); }]; ... // then later you can call [self.topConstraint uninstall]; ? 2.更新約束?mas_updateConstraints - (void)updateConstraints {[self.growingButton mas_updateConstraints:^(MASConstraintMaker *make) {make.center.equalTo(self);make.width.equalTo(@(self.buttonSize.width)).priorityLow();make.height.equalTo(@(self.buttonSize.height)).priorityLow();make.width.lessThanOrEqualTo(self);make.height.lessThanOrEqualTo(self);}]; //according to apple super should be called at end of method [super updateConstraints]; } ? 3.重新設置mas_remakeConstraints - (void)changeButtonPosition { [self.button mas_remakeConstraints:^(MASConstraintMaker *make) {make.size.equalTo(self.buttonSize);if (topLeft) {make.top.and.left.offset(10);} else {make.bottom.and.right.offset(-10);}}]; }

?具體的實例如下:設置view1舉例父視圖的四周距離均為50

?方式一: /** 方式一:使用NSLayoutConstraint實現手動布局----------------------------設置UIEdgeInsets----------------------------@interface UIView (UIConstraintBasedLayoutInstallingConstraints)- (NSArray *)constraints NS_AVAILABLE_IOS(6_0);- (void)addConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0);- (void)addConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0);- (void)removeConstraint:(NSLayoutConstraint *)constraint- (void)removeConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); */ -(void)LayoutConstraint {UIView *superView = self.view;UIView *view1 = [[UIView alloc]init];view1 .translatesAutoresizingMaskIntoConstraints = NO;view1.backgroundColor = [UIColor redColor];[superView addSubview:view1];//設置距離父視圖邊界距離UIEdgeInsets pading = UIEdgeInsetsMake(50, 50, 50, 50);//添加給view1約束 [superView addConstraints:@[[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeTop multiplier:1.0 constant:pading.top],[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:pading.left],[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-pading.bottom],[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:superView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-pading.right],]]; } ?方式二: /** 方法二:使用block @implementation MAS_VIEW (MASAdditions)----------------------------設置offset偏移 或者 邊緣edges ----------------------------- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block */ -(void)LayoutForMASConstraintMaker {UIView *superView = self.view;UIView *view1 = [[UIView alloc]init];view1.backgroundColor = [UIColor redColor];[superView addSubview:view1];//設置距離父視圖邊界距離UIEdgeInsets pading = UIEdgeInsetsMake(50, 50, 50, 50);//添加給view1約束[view1 mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(superView.mas_top).with.offset(pading.top);make.left.equalTo(superView.mas_left).with.offset(pading.left);make.bottom.equalTo(superView.mas_bottom).with.offset(-pading.bottom);make.right.equalTo(superView.mas_right).with.offset(-pading.right);//設置代碼可以更簡單(效果與上面的是一樣的)//make.edges.equalTo(superView).with.insets(pading); }]; } ?方式三: /** 方式三:使用block @implementation MAS_VIEW (MASAdditions)----------------------------設置margin距離----------------------------- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block */ -(void)LayoutForMASConstraintMakerWithMargin {UIView *superView = self.view;UIView *view1 = [[UIView alloc]init];view1.backgroundColor = [UIColor redColor];[superView addSubview:view1];//添加給view1約束[view1 mas_makeConstraints:^(MASConstraintMaker *make) {make.topMargin.equalTo(superView.mas_top).with.offset(50);make.leftMargin.equalTo(superView.mas_left).with.offset(50);make.bottomMargin.equalTo(superView.mas_bottom).with.offset(-50);make.rightMargin.equalTo(superView.mas_right).with.offset(-50);}]; } ?方式四: /**方式四:使用block @implementation MAS_VIEW (MASAdditions)----------------------------設置center和size----------------------------- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block*/ -(void)LayoutForMASConstraintMakerWithCenterWidthHeight {UIView *superView = self.view;UIView *view1 = [[UIView alloc]init];view1.backgroundColor = [UIColor redColor];[superView addSubview:view1];//添加給view1約束[view1 mas_makeConstraints:^(MASConstraintMaker *make) {make.centerX.equalTo(superView);make.centerY.equalTo(superView);make.size.equalTo(superView).sizeOffset(CGSizeMake(-100,-100));}]; } ?演示結果: ?? ? ? ? 程序猿神奇的手,每時每刻,這雙手都在改變著世界的交互方式! 本文轉自當天真遇到現實博客園博客,原文鏈接:http://www.cnblogs.com/XYQ-208910/p/5011483.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的iOS:Masonry练习详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品爆乳一区二区三区 | 色xxxxx | 丰满尤物白嫩啪啪少妇 | 国产伦精品一区二区三区妓女下载 | 国产原创剧情av | 青青草社区视频 | 岛国裸体写真hd在线 | 黄色av日韩| 国产又大又黄的视频 | 日韩久久久久久久久久久 | 日韩精品中文字幕一区二区 | 成人亚洲国产 | 久久综合一区二区三区 | 91精品国产闺蜜国产在线闺蜜 | 日韩最新视频 | 日韩欧美国产另类 | 性视频播放免费视频 | 日本精品一二三 | 91人妻一区二区 | 欧美在线观看网站 | 手机在线看永久av片免费 | 欧美日韩免费一区二区三区 | 日韩天堂一区 | 国产成人在线电影 | 熟女少妇在线视频播放 | 人妻 日韩精品 中文字幕 | 成年人三级网站 | 成人欧美一区二区三区黑人动态图 | 91香草视频 | 国产一级精品视频 | 5d肉蒲团之性战奶水 | 美女脱裤子让男人捅 | 六月丁香激情综合 | 成人免费高清视频 | 午夜粉色视频 | 四色在线 | 麻豆国产视频 | 四季av在线一区二区三区 | 中文一区二区在线观看 | 亚洲视频久久久 | 久久精品99国产 | 特级淫片aaaaaaa级 | 国产美女精品视频国产 | 国内精品久久久久久久久久久 | 成人无码av片在线观看 | 污视频在线免费 | 麻豆综合 | 无码国产69精品久久久久同性 | 伊人操| 日韩精品一区二区三区在线播放 | 中文字幕观看在线 | 极品91| 日本 奴役 捆绑 受虐狂xxxx | 大乳女喂男人吃奶视频 | 欧美色图在线播放 | 成人精品视频在线观看 | 国产一区二区精彩视频 | 曰本女人与公拘交酡 | 欧美性受xxxx黑人猛交88 | 麻豆视频免费网站 | 一区二区三区四区欧美 | 午夜精品福利一区二区三区蜜桃 | 欧美激情视频网 | 日本成人黄色片 | www污污 | 国产又爽又黄又嫩又猛又粗 | 91啦中文 | 久久伊人色 | japanese国产在线观看 | 日韩中文娱乐网 | 国产精品正在播放 | 黄色一及片 | 欧美一级一区二区三区 | 欧美黑人欧美精品刺激 | 色综合中文综合网 | 中文字幕视频 | 亚洲午夜在线 | 成人毛片18女人毛片免费 | 美女扒开腿让男人捅 | av超碰在线观看 | 强开乳罩摸双乳吃奶羞羞www | 亚洲精品日韩精品 | 婷婷激情电影 | 正在播放木下凛凛88av | av av片在线看 | 国产麻豆91 | 久久久精品美女 | 天天插天天射 | 成人免费在线观看 | 91精品国产成人www | 欧美日韩中文国产 | 操女人视频网站 | 久久久久久国产精品无码 | 久久久久久久久久成人 | 日韩视频专区 | 用力抵着尿进去了h | 精品人妻一区二区三区免费 | 精品国产乱码久久久久久蜜柚 | 国产系列在线 |