如何在 AutoLayout 中设置 UIView 的框架?

Posted

技术标签:

【中文标题】如何在 AutoLayout 中设置 UIView 的框架?【英文标题】:How to set frame of UIView in AutoLayout? 【发布时间】:2014-08-20 07:16:08 【问题描述】:

首先我读过this answer。

但不知何故,我们需要以编程方式更改视图。而且我们到处都使用自动布局。

我有类似这样的代码,

 self.containerView.frame = CGRectMake(x,y,30,30);

这不起作用。虽然我可以隐藏/显示边框。但我不能改变框架。

如果不是确切的解决方案,请提出任何技巧。

【问题讨论】:

您没有将框架设置为自动布局。框架是根据你给它的约束为你计算出来的。 您可以通过删除旧约束并添加新约束来更新约束。 @CW0007007 我想不断改变框架的大小。 然后更新约束 您可以为您的约束创建实例变量,然后您可以在需要时以编程方式对其进行更改。 【参考方案1】:

希望这会有所帮助

当自动布局开启时,您无法更新 ui 元素的框架或边界。

所以你应该关闭自动布局然后改变你的元素的框架,或者如果你已经设置了很多约束来管理你的视图并且不想删除它们,你应该以这样的方式更新你的约束约束更新您的视图。

其次,如果某些对象以编程方式添加到您的视图中,那么您之前定义的约束不适用于它。因此,您必须以编程方式添加约束。

您可以使用Autolayout Constraints 工具来简化此过程。

【讨论】:

以上是关于如何在 AutoLayout 中设置 UIView 的框架?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AutoLayout 在一个 UITableView 中设置具有两个原型的 UITableViewCell 的 AutoHeight?

如何使用 Autolayout 调整我的超级视图大小以匹配其子视图的大小?

iOS:如何获取刚刚在界面生成器中设置的 UIView 的框架

代码中设置的约束是不是会覆盖使用 AutoLayout 和 SizeClasses 创建的约束?

如何在 UIView 中设置滚动视图以向上滑动被键盘隐藏的文本字段?

无法在 iOS 中设置 UIView 的底部阴影?