Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios “怎么做?”;翻译自动调整大小GMaskintoConstraints“;真的有用吗?_Ios_Uikit - Fatal编程技术网

Ios “怎么做?”;翻译自动调整大小GMaskintoConstraints“;真的有用吗?

Ios “怎么做?”;翻译自动调整大小GMaskintoConstraints“;真的有用吗?,ios,uikit,Ios,Uikit,我最近开始尝试学习如何完全以编程方式创建iOS应用程序。因此,我遇到的第一个障碍是translatesAutoresizingMaskIntoConstraints通常必须设置为false才能设置约束 在做了一些研究之后,有三件事我非常确定 AutoResizingMask是在引入自动布局系统之前,如何实现动态布局(根据屏幕大小/方向而不同的布局) AutoresizingMasks是一个值,它告诉视图的超级视图在超级视图的边界更改时如何调整其大小 translatesAutoresizingM

我最近开始尝试学习如何完全以编程方式创建iOS应用程序。因此,我遇到的第一个障碍是translatesAutoresizingMaskIntoConstraints通常必须设置为false才能设置约束

在做了一些研究之后,有三件事我非常确定

  • AutoResizingMask是在引入自动布局系统之前,如何实现动态布局(根据屏幕大小/方向而不同的布局)
  • AutoresizingMasks是一个值,它告诉视图的超级视图在超级视图的边界更改时如何调整其大小
  • translatesAutoresizingMaskIntoConstraints是一个布尔值,当设置为true(对于代码创建的UIView,它始终默认为true)时,它会告诉UIKit框架创建约束,以在自动布局系统中复制AutoresizingMask属性的行为
  • 我不明白的是这些约束到底是如何实现的。Apple在其文档中声明“系统创建一组约束,这些约束与视图的自动调整大小掩码指定的行为重复。这还允许您使用视图的框架、边界或中心属性修改视图的大小和位置…”

    这是让我困惑的部分,我不确定是他们的措辞还是我对这个话题的误解。AutoresizingMask只是一个值,因此不能从中创建约束它们是否意味着自动生成的约束实际上是基于子视图的框架(也称为childView.topAnchor=superview.topAnchor)?AutoresizingMask的值仅仅决定了基于帧设置的这些约束中的哪一个


    例如:框架为(x:0,y:0,宽度:50,高度:50)的UIView和“FlexibleBottomMargin”的AutoresizingMask。UIKit是否会自动创建约束,将视图放置在基于帧的布局的位置,然后省略某些约束(在本例中为底部)以复制遮罩的行为?

    正确的是,会解释
    自动重定尺寸任务
    (与帧一起)确定要创建的约束

    在您给出的示例中,系统将创建以下约束-

    • 宽度限制为50
    • 高度限制为50
    • 到最近邻居的前导、尾随和顶部约束,以及到这些邻居的固定距离
    • 与最近邻居的距离大于或等于底部约束
    这将产生一个50x50的视图,该视图水平固定在顶部,底部和相邻视图之间的空间可以根据需要增长