我刚刚开始使用约束,我发现必须使用约束设置UIView的位置和大小是繁重的 - 四个约束似乎过多。 (我不怀疑可以用更少的约束来做;我只是在处理一个非常基本的理解!)是否可以设置UIView的大小,因此,不使用约束,但是然后设置位置使用约束?我知道设置大小的唯一非约束方式还涉及设置原点。
答案 0 :(得分:4)
如果您使用AutoLayout管理视图位置和大小,则不建议您调整视图的帧。大多数情况下,这无论如何都无法发挥作用。
但即使是AutoLayout也需要了解尺寸和位置。因此,您最终必须指定两者。如果您要求可以设置少于4个约束(例如,通过不指定它的位置),AutoLayout将不知道在哪里显示视图。
你难以指定4个约束条件是什么?这是在您的XIB / Storyboard文件中自动完成的。如果您正在编写代码中的所有内容,请使用方便ASCII-art-format strings,它允许您使用“可视”字符串表示来指定位置和大小。
答案 1 :(得分:2)
看起来你只是想设置视图的框架(原点和大小)。
您可以使用以下内容:
CGRect newFrame = CGRectMake( xCoordinate, yCoordinate, width, height);
myView.frame = newFrame;
xCoordinate,yCoordinate,width和height是你想要的任何东西。
希望有所帮助!如果不是您正在寻找的答案,请告诉我,我会尽力帮助。
答案 2 :(得分:2)
推测:
视图的几何形状由其框架,边界和中心属性定义。框架 在其superview和的坐标系中定义视图的原点和尺寸 在布局期间通常用于调整视图的大小或位置。中心 property可用于调整视图的位置而不改变其大小。该 bounds定义视图的内部尺寸,因为它看到它们并且几乎被使用 专门用于自定义绘图代码。 框架和边界矩形的大小部分 耦合在一起,以便更改任一矩形的大小更新两者的大小。
因此,从理论上讲,您可以更改边界的大小,原点始终为0,0。
答案 3 :(得分:1)
设置视图的bounds
属性将更改其大小而不显式设置原点 - 来自文档:
更改边界大小会使视图相对于其中心点增大或缩小。
你可以尝试设置一个合适的大小调整掩码(可能是全方位灵活的边距?),它将被转换为你的约束,然后使用定位约束来移动它。
但是,我个人建议全力以赴而不是混合和匹配。可视化格式允许您非常简单地指定大小和位置。