Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

3 роки тому
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. # SDAutoLayout(一行代码搞定自动布局!)
  2. ##众多公司和个人开发者已经使用本库布局:
  3. SDAutoLayout使用者开发的部分app截图 http://www.jianshu.com/p/9bc04d3effb8
  4. 一行代码搞定自动布局!致力于做最简单易用的Autolayout库。The most easy way for autolayout.
  5. ## 技术支持(QQ交流群):
  6. 497140713(1群) 519489682(2群已满)
  7. ##Pod支持:
  8. 支持pod: pod 'SDAutoLayout', '~> 1.52'
  9. 如果发现pod search SDAutoLayout 搜索出来的不是最新版本,需要在终端执行cd转换文件路径命令退回到desktop,然后执行pod setup命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了
  10. ## 更新记录:
  11. 2016.04.30 -- 修复之前button作为父视图时内部控件不能自动布局问题
  12. 2016.04.05 -- 修复宽度自适应label在重用时候偶尔出现的宽度计算不准确的问题(发布pod1.51版本)
  13. 2016.03.23 -- 升级了缓存机制,新版本在tableview滑动cell时候流畅度和性能提升20%以上(发布pod1.50版本)
  14. 2016.01.23 -- 增加label对attributedString的内容自适应
  15. 2016.01.21 -- 实现tableview局部刷新cell高度缓存的自动管理
  16. 2016.01.20 -- demo适配在ios7上的屏幕旋转问题
  17. 2016.01.18 -- 推出“普通简化版”tableview的cell自动高度方法(推荐使用),原来的需2步设置的普通版方法将标记过期
  18. 2016.01.13 -- 增加在不确定bottom view的情况下的cell高度自适应方法
  19. 2016.01.07 -- 1.增加 scrollview 横向内容自适应功能;2.增加view宽高相等的功能
  20. 2016.01.03 -- 增加任何类型对象都可以实现一行代码搞定cell高度自适应;增加文档注释
  21. 2015.12.08 -- 重大升级:1.支持scrollview内容自适应;2.任意添加或者修改约束不冲突;3.性能提升40%以上;4.添加最大、最小宽高约束
  22. ## 视频教程:
  23. ☆☆ SDAutoLayout 基础版视频教程:http://www.letv.com/ptv/vplay/24038772.html ☆☆
  24. ☆☆ SDAutoLayout 进阶版视频教程:http://www.letv.com/ptv/vplay/24381390.html ☆☆
  25. ☆☆ SDAutoLayout 原理简介视频教程:http://www.iqiyi.com/w_19rt0tec4p.html ☆☆
  26. ## 部分SDAutoLayout的DEMO:
  27. 完整微信Demo https://github.com/gsdios/GSD_WeiXin
  28. ![](http://ww3.sinaimg.cn/mw690/9b8146edgw1f1nm3pziawg205u0a0qv5.gif)![](http://ww1.sinaimg.cn/bmiddle/9b8146edgw1f06aoe2umhg206e0b4u0x.gif)![](http://ww4.sinaimg.cn/bmiddle/9b8146edgw1ezal3smihcg206y0ciqv5.gif)![](http://ww3.sinaimg.cn/mw690/9b8146edgw1f1nm3lweg3g207s0dcu0x.gif)![](http://ww2.sinaimg.cn/mw690/9b8146edgw1f23irukb0qg207i0dwu0x.gif)![](http://ww2.sinaimg.cn/bmiddle/9b8146edgw1eya1jv951ig208c0etqv5.gif)
  29. # 用法简介
  30. ## tableview和cell高度自适应:
  31. ####普通(简化)版【推荐使用】:tableview 高度自适应设置只需要2步
  32. 1. >> 设置cell高度自适应:
  33. // cell布局设置好之后调用此方法就可以实现高度自适应(注意:如果用高度自适应则不要再以cell的底边为参照去布局其子view)
  34. [cell setupAutoHeightWithBottomView:_view4 bottomMargin:10];
  35. 2. >> 获取自动计算出的cell高度
  36. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  37. {
  38. id model = self.modelsArray[indexPath.row];
  39. // 获取cell高度
  40. return [self.tableView cellHeightForIndexPath:indexPath model:model keyPath:@"model" cellClass:[DemoVC9Cell class] contentViewWidth:cellContentViewWith];
  41. }
  42. ####升级版(适应于cell条数少于100的tableview):tableview 高度自适应设置只需要2步
  43. 1. >> 设置cell高度自适应:
  44. // cell布局设置好之后调用此方法就可以实现高度自适应(注意:如果用高度自适应则不要再以cell的底边为参照去布局其子view)
  45. [cell setupAutoHeightWithBottomView:_view4 bottomMargin:10];
  46. 2. >> 获取自动计算出的cell高度
  47. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  48. {
  49. // 获取cell高度
  50. return [self cellHeightForIndexPath:indexPath cellContentViewWidth:[UIScreen mainScreen].bounds.size.width];
  51. }
  52. ## 普通view的自动布局:
  53. #### 用法示例
  54. /* 用法一 */
  55. _view.sd_layout
  56. .leftSpaceToView(self.view, 10)
  57. .topSpaceToView(self.view, 80)
  58. .heightIs(130)
  59. .widthRatioToView(self.view, 0.4);
  60. /* 用法二 (一行代码搞定,其实用法一也是一行代码) */
  61. _view.sd_layout.leftSpaceToView(self.view, 10).topSpaceToView(self.view,80).heightIs(130).widthRatioToView(self.view, 0.4);
  62. >> UILabel文字自适应:
  63. // autoHeightRatio() 传0则根据文字自动计算高度(传大于0的值则根据此数值设置高度和宽度的比值)
  64. _label.sd_layout.autoHeightRatio(0);
  65. *******************************************************************************
  66. 注意:先把需要自动布局的view加入父view然后在进行自动布局,例:
  67. UIView *view0 = [UIView new];
  68. UIView *view1 = [UIView new];
  69. [self.view addSubview:view0];
  70. [self.view addSubview:view1];
  71. view0.sd_layout
  72. .leftSpaceToView(self.view, 10)
  73. .topSpaceToView(self.view, 80)
  74. .heightIs(100)
  75. .widthRatioToView(self.view, 0.4);
  76. view1.sd_layout
  77. .leftSpaceToView(view0, 10)
  78. .topEqualToView(view0)
  79. .heightRatioToView(view0, 1)
  80. .rightSpaceToView(self.view, 10);
  81. *******************************************************************************
  82. #### 自动布局用法简析
  83. ![](http://ww1.sinaimg.cn/mw690/9b8146edgw1ex4or5ixkjj20k60gw3zg.jpg)
  84. 1.1 > leftSpaceToView(self.view, 10)
  85. 方法名中带有“SpaceToView”的方法表示到某个参照view的间距,需要传递2个参数:(UIView)参照view 和 (CGFloat)间距数值
  86. 1.2 > widthRatioToView(self.view, 1)
  87. 方法名中带有“RatioToView”的方法表示view的宽度或者高度等属性相对于参照view的对应属性值的比例,需要传递2个参数:(UIView)参照view 和 (CGFloat)倍数
  88. 1.3 > topEqualToView(view)
  89. 方法名中带有“EqualToView”的方法表示view的某一属性等于参照view的对应的属性值,需要传递1个参数:(UIView)参照view
  90. 1.4 > widthIs(100)
  91. 方法名中带有“Is”的方法表示view的某一属性值等于参数数值,需要传递1个参数:(CGFloat)数值
  92. # PS
  93. // 如果需要用“断言”调试程序请打开此宏(位于UIView+SDAutoLayout.h)
  94. //#define SDDebugWithAssert
  95. ![](http://ww3.sinaimg.cn/bmiddle/9b8146edgw1ex4mukixr6g209g07lhdt.gif)