我刚刚开始使用约束,我发现必须使用约束来设置 UIView 的位置和大小是很麻烦的——四个约束似乎过多。(我不怀疑可以使用更少的约束;我只是仍然有一个非常基本的理解!)是否可以设置 UIView 的大小,因此,不使用约束,而是设置位置使用约束?我知道设置大小的唯一非约束方式还涉及设置原点。
4 回答
如果您使用 AutoLayout 来管理视图位置和大小,则不建议调整视图的框架。大多数时候这无论如何都行不通。
但即使是 AutoLayout 也需要知道大小和位置。所以你总是不得不同时指定两者。如果像您问的那样可以设置少于 4 个约束(例如,通过不指定它的位置),AutoLayout 将不知道在哪里显示视图。
您发现必须指定 4 个约束有什么困难?这是在您的 XIB/Storyboard 文件中自动为您完成的。如果您在代码中编写所有内容,请查看方便的ASCII-art-format 字符串,它允许您使用“可视”字符串表示指定位置和大小。
似乎您只是想设置视图的框架(原点和大小)。
你可以使用这样的东西来做到这一点:
CGRect newFrame = CGRectMake( xCoordinate, yCoordinate, width, height);
myView.frame = newFrame;
xCoordinate、yCoordinate、宽度和高度是你想要的。
希望有帮助!如果这不是您正在寻找的答案,请告诉我,我会尽力提供帮助。
据说:
视图的几何结构由其框架、边界和中心属性定义。框架定义了视图在其父视图坐标系中的原点和尺寸,通常在布局时用于调整视图的大小或位置。center 属性可以用来调整视图的位置而不改变它的大小。边界定义视图的内部尺寸,因为它看到它们并且几乎专门用于自定义绘图代码。框架和边界矩形的大小部分 耦合在一起,因此更改任一矩形的大小都会更新两者的大小。
因此,理论上,您可以更改边界的大小,其中原点始终为 0,0。
设置bounds
视图的属性将更改其大小,而无需您明确设置原点 - 来自文档:
更改边界大小会相对于其中心点增大或缩小视图。
您可以尝试设置一个适当的调整大小蒙版(可能是灵活的边距?),它将为您转换为约束,然后使用定位约束来移动它。
但是,我个人建议全力以赴,而不是混合和匹配。视觉格式将允许您非常简单地指定大小和位置。