zoukankan      html  css  js  c++  java
  • [转]translatesAutoresizingMaskIntoConstraints详解

    目前在学习AutoLayout的相关知识,看到有些UIView需要设置这个属性,在网上看到这篇文章做得很详细,做个转载昨晚笔记,侵删请联系

    原文传送门:https://www.jianshu.com/p/d67395deb694

    translatesAutoresizingMaskIntoConstraints

    • 把 autoresizingMask 转换为 Constraints
    • 即:可以把 frame ,bouds,center 方式布局的视图自动转化为约束形式。(此时该视图上约束已经足够 不需要手动去添加别的约束)

    • 用代码创建的所有view , translatesAutoresizingMaskIntoConstraints 默认是 YES
    • 用 IB 创建的所有 view ,translatesAutoresizingMaskIntoConstraints 默认是 NO (autoresize 布局:YES , autolayout布局 :NO)

    如何设置 translatesAutoresizingMaskIntoConstraints

    • 视图 使用代码创建,frame 布局 ,不用去管 translatesAutoresizingMaskIntoConstraints
    • 视图 使用代码创建,autolayout 布局,translatesAutoresizingMaskIntoConstraints 设置为 NO
    • 视图 IB 创建,frame 布局 , translatesAutoresizingMaskIntoConstraints 不用管 (IB 帮我们设置好了:YES)
    • 视图 IB 创建,autolayout 布局,translatesAutoresizingMaskIntoConstraints 不用管 (IB 帮我们设置好了,NO)

    为什么 translatesAutoresizingMaskIntoConstraints 使用约束布局时候,就要设置为 NO?

    translatesAutoresizingMaskIntoConstraints 的本意是将 frame 布局 自动转化为 约束布局,转化的结果是为这个视图自动添加所有需要的约束,如果我们这时给视图添加自己创建的约束就一定会约束冲突。

    为了避免上面说的约束冲突,我们在代码创建 约束布局 的控件时 直接指定这个视图不能用frame 布局(即translatesAutoresizingMaskIntoConstraints=NO),可以放心的去使用约束了。


    例子:

    v1是一个不使用autolayout的view,
    v2是一个使用autolayout的view,
    但v1成为v2的subview时,
    v2需要四条隐含的constraint来确定v1的位置,这些约束都是从v1的frame转化而来:

  • 相关阅读:
    梯度下降
    Azure Blob数据迁移工具
    基于物理文件的HBase备份还原
    基于Azure Blob冷存储的数据压缩备份总结
    项目部署、配置、查错常用到的Linux命令
    阿里云服务器云数据库免费体验(Java Web详细实例)
    Linux文件编辑命令详细整理
    深入Java虚拟机(4)——网络移动性
    C#删除WebBrowser控件的Session
    深入Java虚拟机(3)——安全
  • 原文地址:https://www.cnblogs.com/zhouhui231/p/12118540.html
Copyright © 2011-2022 走看看