在iOS开发过程中,手写contraints是非常痛苦的一件事情,往往那么一丢丢功能要写大量的代码,非常容易发生错误,并且非常不方便调试。所以只有在不得以的情况下才采用手工方式写contraints,一般都在Storyboard中完成,但Storyboard也是一个坑爹的东东,特别是在SVN协作工作时各种问题不甚其烦;但是后来知道了Masonry,体验了一段时间,非常好用,自此很少再使用storyboard写UI了。

安装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(, , , ); [redView mas_makeConstraints:^(MASConstraintMaker *make) {
UIView *superView = self.view;
make.left.equalTo(superView).insets(viewInsets);
make.right.equalTo(yellowView.mas_left).offset(-);
make.top.equalTo(superView).insets(viewInsets);
make.width.equalTo(yellowView.mas_width).offset();
make.height.equalTo(@);
}]; [yellowView mas_makeConstraints:^(MASConstraintMaker *make) {
UIView *superView = self.view;
make.right.equalTo(superView).insets(viewInsets);
make.left.equalTo(redView.mas_right).offset();
make.top.equalTo(superView).insets(viewInsets);
make.width.equalTo(redView.mas_width).offset();
make.height.equalTo(@);
}];

效果如下:

最新文章

  1. MongoDB笔记
  2. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....
  3. VS加入全局缓存
  4. angularJS ngClass如何使用
  5. html css 编写规范
  6. SQL——查询考试
  7. iOS开发——项目实战总结&关于随机量
  8. 【MPI学习4】MPI并行程序设计模式:非阻塞通信MPI程序设计
  9. JAVA中的各种 哈希码(HashCode) 与 equals方法在HIBERNATE的实际应用[转载]
  10. C#性能优化实践 资料整理
  11. postman下载和安装
  12. Grunt构建工具插件篇——之less工具2
  13. background-image属性
  14. 怎么精确控制solidworks里面的表格的位置
  15. linux 安装 mysql
  16. 基于MongodbDB的用户认证-运维笔记
  17. js 报delete object in strict mode
  18. MYSQL-使用mysqldump创建数据库快照
  19. Java虚拟机二 虚拟机的基本结构
  20. keras输出中间层结果,某一层的权重、偏置

热门文章

  1. UVA 11346 Probability
  2. 第2章 CentOS网络配置
  3. esrichina
  4. XP操作系统设置:[82]关机快捷键
  5. Unity3d插件]EasyTouch简单使用方法
  6. 关于 thinkPHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback
  7. 1 npoi 网上 不用模板 设置密码 workbook.WriteProtectWorkbook("password", "admin"); 、、 2 locked.IsLocked = true; sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容 3 模板设置密码 确定原密码 设置新密码
  8. Android自己定义圆角ImageView
  9. Qt Quick之StackView具体解释(1)
  10. php新版本号废弃 preg_replace /e 修饰符