我应该使整个层次结构的固有内容大小无效吗?

Should I invalidate intrinsic content size for the whole hierarchy?

假设我有以下启用了自动布局的视图层次结构:

UIStackView |__ OuterCustomView (overridden intrinsic content size) |__ UILabel |__ InnerCustomView (overridden intrinsic content size) |__UILabel |__UILabel

InnerCustomView 内的标签具有可动态更改的文本和字体。每当发生更改时,我都会在 InnerCustomView 实例上调用 InvalidateIntrinsicContentSize()(Xamarin 语法)。

问题是 - 我是否还需要在包含 OuterCustomView 上手动使其无效,或者框架是否足够聪明以从那里获取所有内容并重新布局所有内容直到最顶层 UIStackView?

不,您不需要手动使固有内容大小无效。 在为您的视图系统调用方法 invalidateIntrinsicContentSize() 后,递归地更新层次结构中的所有超级视图。