5月30日-Autolayout

作者: 托马斯君 | 来源:发表于2015-06-01 16:10 被阅读101次

    0530-AutoLayout

    苹果的屏幕尺寸

  1. iPhone的尺寸
    • 3.5inch、4.0inch、4.7inch、5.5inch
  2. iPad的尺寸
    • 7.9inch、9.7inch
  3. 屏幕的方向

  4. 竖屏
  5. 横屏
  6. 什么是Autolayout

  7. AutoLayout是一种“自动布局”技术,专门用来布局UI界面
  8. Autolayout自iOS 6开始引入,由于Xcode4的不给力,当时并没有得到很大推广
  9. 自iOS 7(Xcode 5)开始,Autolayout的开发效率得到很大的提升
  10. 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面
  11. Autolayout能很轻松地解决屏幕适配的问题
  12. 介绍

  13. 在Autolayout之前,有Autoresizing可以作屏幕适配,但局限性较大,有些任务根本无法完成
  14. 相比之下,Autolayout的功能比Autoresizing强大很多
  15. Autolayout的2个核心概念
    • 参照
    • 约束
  16. Autolayout的警告和错误

  17. 警告
    • 控件的frame不匹配所添加的约束,比如约束控件的宽度为100,而控件现在宽度是110
  18. 错误
    • 缺乏必要的约束,比如只约束了宽度和高度,没有约束具体的位置
    • 两个约束冲突,比如1个约束控件的宽度100,另外一个约束控件的位置为110
  19. 代码实现Autolayout的步骤

  20. 利用NSLayoutConstraint类创建具体的约束对象
  21. 添加约束对象到相应的View上

    - (void)addConstraint:(NSLayoutConstraint *)constraint;
    - (void)addConstraints:(NSArray *)constraints;
    
  22. 代码实现Autolayout的注意点

  23. 要先禁止autoresizing功能,设置View下面的属性为NO
    view.translatesAutoresizingMaskIntoConstraints = NO;
    
  24. 添加约束之前,一定要保证相关控件都已经在各自的父控件上
  25. 不用再给View设置frame
  26. Autolayout的UILabel

  27. 在没有Autolayout之前,UILable的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域
  28. 有Autolayout之后,UILabel的Bounds默认会自动包住所有的文字内容
  29. 基于Autolayout的动画

  30. 在修改了约束之后,只要执行下面的代码,就能做动画效果
    [UIView animateWithDuration:1.0 animations:^{
      [添加了约束的view layoutIfNeeded];
    }];
  31. 相关文章

      网友评论

        本文标题:5月30日-Autolayout

        本文链接:https://www.haomeiwen.com/subject/xyhdqttx.html