[UILabel的文本更改时如何自动在UILabel的超级视图上调用layoutSubviews?

问题描述 投票:0回答:1

由于视图view及其标签view.label,我正在使用手动布局(出于性能和动画的原因)。当view.label的文本更改时,我目前必须显式调用view.setNeedsLayout()来更新其周围的内容。但是使用自动布局时,如果view的文本发生更改(由于其对view.label的影响)会发生变化,intrinsicContentSize会根据需要自动神奇地更新其布局。关于如何变得更加自动魔术但仍使用手动布局的任何想法?

ios autolayout uilabel intrinsic-content-size
1个回答
0
投票

答案是使用自动版面配置,它会为您完成。您不必为整个视图层次结构采用“自动布局”,而只需采用相关部分即可。这是一个已解决的问题。

如果您没有测量到性能下降,premature optimization中没有意义,请随时搜索该术语。

您总是可以覆盖UIView子类的属性设置器和方法,并在您的超级视图上调用所需的任何东西,但是如果您不知道<< [完全您在做什么。

因此,如果您仍然想手动进行操作,则必须找到一种通知您的超级视图的方法,并且总是有可能对子视图属性执行KVO来触发布局传递,但是正如我所说,您可以进入如果您不执行所要处理的操作,很快就会遇到麻烦,并且在将来的iOS版本中肯定会中断。​​

随时发布您的代码。

参考资料(已过时,但Apple不再可悲地编写编程指南:: https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/CreatingViews.html#//apple_ref/doc/uid/TP40009503-CH5-SW1

© www.soinside.com 2019 - 2024. All rights reserved.