• 第一章 ------ AutoYout介绍


    1.使用自动布局的好处:

        (1)让两个视图进行尺寸匹配,使两个视图始终保持相同的宽度

        (2)无论父视图如何改变,视图都可以相对于父视图居中

        (3)拜放一行视图时将几个视图的底部对齐

        (4)将两个视图偏移一定的距离

        (5)将两个视图的底部绑定,当移动时两个视图都会同时移动

        (6)防止图像视图在按自然大小看不到完整内容时收缩成一个点(即不压缩图像也不剪切视图的内容)

        (7)显示按钮时旁边不能有太多的补白

    2.内容驱动的布局

        (1)就是根据视图的内容进行布局

        (2)当视图内容(如大小、位置形状)发生改变时,布局也要随之进行改变

    3.优先级规则

        (1)设计时,不仅仅要指定每个视图的布局质量,而且要排除它们的优先级顺序,当规则发生冲突的时候可以根据优先级排序选择最重要的布局质量来保护。

        (2)例如:按钮的最小窗口尺寸设置高于其他尺寸设置的请求,,,这样可以强制性的设定一个自然的最小窗口尺寸,防止窗口进一步缩小

    4.约束

        (1)使用约束的类是NSLouyout

        (2)可以指定视图属性的关系,如高、宽、位置和中心点

    5.充分性

        (1)布局必须要遵守四个规则,位置和长宽(x,y,长,宽)

    6.约束属性

        (1)属性:在约束系统中为名词,用来 描述视图对齐矩形内的位置

        (2)关系:是动词,指出如何将不同的属性进行相互比较

        (3)当设置国际化应用程序时,尽量多使用前和后的术语,不用左和右,因为有一些语言是从右到左来对待的

    7.关于那些丢失的图像

        (1)欠约束和规则不完整都会导致视图丢失

        (2)欠约束的视图没有为auto layout提供构建视图所需的足够信息,因此它通常默认大小为0

    8.追踪丢失的视图

        (1)方法是在预期它们出现之后检查阿门的几何形状,例如使用viewdidappear:awakefromnib:,可以添加nsassert来描述它们的预期大小和位置。

        (2)可以调用hasAmbignousLayout来测试视图的约束是否充分。

    9.内在内容大小

        (1)视图内容的大小通过每个视图的intrinsicContentSize属性来表达

    NSLog(@"%@ : %@",[button titleForState:UIControlStateNormal],NSStringFromCGSize(button.intrinsicContentSize));

        (2)当改变了视图的内在内容时,需要调用invalidateIntrinsicContentSize方法,让autolayout知道在下次布局时重新计算

    10.压缩阻力和内容吸附

        (1)压缩阻力高的视图能够抵抗收缩,不允许内容被剪切,阻力高内容可以被保留,阻力低的视图大小发生改变时以内容就会被压缩剪切,默认是750

        (2)内容吸附描述了视图将框架于其内容的自然大小匹配的意愿,就是内容到视图框架边缘的距离,优先级高的距离小,优先级低的距离大,空白多,默认是250

    11.声明对齐矩形

        (1)可使用alignmntRectForFrame,frameForAlignmentRect,baselineOffsetFromBottom,alignmentRectInsets来表示对齐几何图的方式

        (2)需要注意的是:alignmntRectForFrame和frameForAlignmentRect必须是在数学上是互逆的,baseline是指内容视图底部对齐的水平线   

  • 相关阅读:
    spring 配置 线程池并使用 springtest 进行测试
    Mybatis使用generator自动生成的Example类使用OR条件查询
    springtest mapper注入失败问题解决 {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方案
    idea 开启 tomcat 访问日志记录
    idea ssm项目迁移到另一台机器上时出现不能正常启动项目的解决方案
    记一次 java 连接 linux ssh服务 权限验证失败的原因和解决过程
    ajax传递数组给controller的实现方法和坑
    service手动实例化(new)导致类中的spring对象无法注入的问题解决
    javaweb学习总结十一(JAXP对XML文档进行DOM解析)
  • 原文地址:https://www.cnblogs.com/lelun/p/5698392.html
Copyright © 2020-2023  润新知