Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义UIView如何响应基于约束的帧更改_Ios_Ios7_Nslayoutconstraint - Fatal编程技术网

Ios 自定义UIView如何响应基于约束的帧更改

Ios 自定义UIView如何响应基于约束的帧更改,ios,ios7,nslayoutconstraint,Ios,Ios7,Nslayoutconstraint,我有一个容器UIView,它有一些约束,这些约束会导致它改变高度以匹配旧的3.5英寸iPhone或新的4英寸iPhone。在这个容器UIView中,我有几个自定义UIView的副本,我们称之为DynamicButtonDynamicButton有三个子视图,它们使用帧(无约束)进行布局,并且每当调用[DynamicButton-setFrame]时,都会重新计算三个子视图的帧 设置我的约束,以便我的DynamicButton视图以相等的高度填充整个容器视图 在viewdiload和viewwil

我有一个容器UIView,它有一些约束,这些约束会导致它改变高度以匹配旧的3.5英寸iPhone或新的4英寸iPhone。在这个容器UIView中,我有几个自定义UIView的副本,我们称之为
DynamicButton
DynamicButton
有三个子视图,它们使用帧(无约束)进行布局,并且每当调用
[DynamicButton-setFrame]
时,都会重新计算三个子视图的帧

设置我的约束,以便我的
DynamicButton
视图以相等的高度填充整个容器视图

viewdiload
viewwillbeen
中,我的容器视图的高度是它在情节提要中的高度(无论设备如何)。我的
DynamicButton
s的
58
像素高

viewdide
中,约束最终生效,当在旧的3.5英寸iPhone上显示时,containerView高度降低到正确的值,我的
DynamicButton
s的高度为
47
像素

但是,我的
DynamicButton
类在更改大小时从未收到
setFrame
消息


我需要重写什么方法来拦截大小更改,以便重新配置子视图上的帧?

DynamicButton
中重写
layoutSubviews
,并在那里设置子视图的帧

布局子视图的文档中

[…]子类可以根据需要重写此方法,以便对其子视图执行更精确的布局。仅当子视图的自动调整大小和基于约束的行为不提供所需的行为时,才应重写此方法。您可以使用实现直接设置子视图的框架矩形。[…]


奇怪,我以前也试过,但没人叫它……啊,我第一次肯定是错过了什么或做错了什么,因为它现在起作用了。谢谢。还有,它的发音是BeardFace。@Kennyyland哈哈,终于有人叫到我的名字了。是的,没问题!奇怪的是,它第一次没起作用。