我有一个容器UIView,它有一些约束条件会导致它改变高度以匹配旧的3.5和#34; iPhone或新的4"苹果手机。在容器UIView中,我有几个自定义UIView的副本,让我们称之为DynamicButton
。 DynamicButton
有三个子视图,使用它们的框架(无约束)布局,每当调用[DynamicButton -setFrame]
时,三个子视图的框架都会被重新计算
设置了我的约束,以便我的DynamicButton
视图将以相同的高度填充整个容器视图。
在viewDidLoad
和viewWillAppear
中,我的容器视图的高度是故事板中的高度(无论设备如何)。我的DynamicButton
个58
像素高。
在viewDidAppear
中,约束最终生效,并且当在旧的3.5"上显示时,containerView高度会降低到正确的值。 iPhone和DynamicButton
的{{1}}像素高。
但是,我的47
类在更改大小时从不会收到DynamicButton
消息。
我需要覆盖哪种方法来拦截大小更改,以便我可以重新配置子视图中的帧?
答案 0 :(得分:3)
覆盖layoutSubviews
中的DynamicButton
并设置您的子视图'框架。
来自layoutSubviews
的文档:
[...]子类可以根据需要覆盖此方法,以执行其子视图的更精确布局。仅当子视图的自动调整大小和基于约束的行为不提供所需的行为时,才应覆盖此方法。您可以使用实现直接设置子视图的框架矩形。 [...]