对不起新手问题,我仍然对UIKit感到困惑。
我有一个UIView A,带有子视图B,后者又有一个子视图C.所有这些都是自定义视图,包含layoutSubview和sizeThatFits实现。
现在发生了一些会导致C改变其大小的UI事件;具体来说,我的控制器将在C上设置属性。因为C将改变大小,这意味着B将必须再次布局。这可能会导致它改变自己的大小,在这种情况下,A应该再次布局。 但是我不确定谁负责在A上调用setNeedsLayout。
我的财产设定者应该在C上调用[self.superview setNeedsLayout]吗?如果是这样,该消息如何传播到A?我认为在B中覆盖setNeedsLayout以使它向上传播消息是不合理的。
或者我的控制器应该调用[SetNeedsLayout]吗?但这也感觉不对。如果消息没有导致B调整大小,那么A肯定不需要布局,控制器也不必知道B和C交互的细节,因此它可以决定A是否需要布局
如果我想干净利落地实现它,它应该如何工作?