Ios 自定义UIView如何响应基于约束的帧更改
我有一个容器UIView,它有一些约束,这些约束会导致它改变高度以匹配旧的3.5英寸iPhone或新的4英寸iPhone。在这个容器UIView中,我有几个自定义UIView的副本,我们称之为Ios 自定义UIView如何响应基于约束的帧更改,ios,ios7,nslayoutconstraint,Ios,Ios7,Nslayoutconstraint,我有一个容器UIView,它有一些约束,这些约束会导致它改变高度以匹配旧的3.5英寸iPhone或新的4英寸iPhone。在这个容器UIView中,我有几个自定义UIView的副本,我们称之为DynamicButtonDynamicButton有三个子视图,它们使用帧(无约束)进行布局,并且每当调用[DynamicButton-setFrame]时,都会重新计算三个子视图的帧 设置我的约束,以便我的DynamicButton视图以相等的高度填充整个容器视图 在viewdiload和viewwil
DynamicButton
DynamicButton
有三个子视图,它们使用帧(无约束)进行布局,并且每当调用[DynamicButton-setFrame]
时,都会重新计算三个子视图的帧
设置我的约束,以便我的DynamicButton
视图以相等的高度填充整个容器视图
在viewdiload
和viewwillbeen
中,我的容器视图的高度是它在情节提要中的高度(无论设备如何)。我的DynamicButton
s的58
像素高
在viewdide
中,约束最终生效,当在旧的3.5英寸iPhone上显示时,containerView高度降低到正确的值,我的DynamicButton
s的高度为47
像素
但是,我的DynamicButton
类在更改大小时从未收到setFrame
消息
我需要重写什么方法来拦截大小更改,以便重新配置子视图上的帧?在
DynamicButton
中重写layoutSubviews
,并在那里设置子视图的帧
从布局子视图的文档中
:
[…]子类可以根据需要重写此方法,以便对其子视图执行更精确的布局。仅当子视图的自动调整大小和基于约束的行为不提供所需的行为时,才应重写此方法。您可以使用实现直接设置子视图的框架矩形。[…]
奇怪,我以前也试过,但没人叫它……啊,我第一次肯定是错过了什么或做错了什么,因为它现在起作用了。谢谢。还有,它的发音是BeardFace。@Kennyyland哈哈,终于有人叫到我的名字了。是的,没问题!奇怪的是,它第一次没起作用。