以编程方式更改故事板上的 UIView 的大小

Posted

技术标签:

【中文标题】以编程方式更改故事板上的 UIView 的大小【英文标题】:Programatically change size of UIView that is on Storyboard 【发布时间】:2016-02-27 14:54:11 【问题描述】:

我是 attempting to change the size of a UIView,我已将其放入情节提要中。出于某种原因,size does not change 但与情节提要上绘制的相同。我没有连接 Autolayout,所以这不可能是它保持不变的原因。我的代码:

@IBOutlet weak var courseView: CourseView!  // CourseView is a UIView

override func viewWillAppear(animated: Bool) 
    courseView.frame = CGRectMake(0, 0, 200, 200)  // This is just to test!

我在viewDidLoad() 也做了同样的事情,但没有成功。有什么想法吗?

【问题讨论】:

你在使用auto layout吗?在superview中我的意思是 【参考方案1】:

据此answer

viewWillAppear:viewDidLoad: 方法没有布局信息。稍后调用 viewDidLayoutSubviews: 时,此处所做的任何布局更改都将丢失。

如果您使用自动布局,则无法在任何时候更改约束,但实际更改将发生@viewDidLayoutSubviews:

如果您不使用自动布局,则需要更新布局@viewDidLayoutSubviews: 或在呈现视图之后(@viewDidAppear: 或通过用户输入)

【讨论】:

完美运行,谢谢!我发现 viewDidLayoutSubviews() 实际上效果更好,因为没有时间延迟。如果在 viewDidAppear() 中调用,原始视图会闪烁,然后只会绘制调整后的视图。

以上是关于以编程方式更改故事板上的 UIView 的大小的主要内容,如果未能解决你的问题,请参考以下文章

UIView 调整内容大小

如何在故事板上显示以编程方式添加的元素?

如何从位于故事板上的视图控制器获取子视图

如何在故事板或XIB中以编程方式分配uiview?

在 Storyboard 上更改 UIButton 的本地化

故事板上的 Xcode 9 和 9.1 选择的设备会影响部署设备上的视图宽度