【发布时间】:2013-07-03 16:53:45
【问题描述】:
下面的问题是这个问题的延续:
iOS: Multi-line UILabel in Auto Layout
主要思想是每个视图都应该声明它的“首选”(固有)大小,以便 AutoLayout 可以知道如何正确显示它。 UILabel 只是视图无法自己知道它需要什么尺寸来显示的情况的一个例子。这取决于提供的宽度。
正如 mwhuss 所指出的,setPreferredMaxLayoutWidth 做到了让标签跨越多行。但这不是这里的主要问题。问题是我在何时何地获得这个作为参数发送给 setPreferredMaxLayoutWidth 的 width 值。
我设法制作了一些看起来合法的东西,如果我有任何错误,请纠正我,如果你知道更好的方法,请告诉我。
在 UIView 的
-(CGSize) intrinsicContentSize
我根据self.frame.width为我的UILabels setPreferredMaxLayoutWidth。
UIViewController的
-(void) viewDidLayoutSubviews
是我知道的第一个回调方法,主视图的子视图被指定为它们在屏幕上的确切帧。然后,从该方法内部,我对我的子视图进行操作,使它们的固有大小无效,以便 UILabel 根据指定给它们的宽度分成多行。
【问题讨论】:
标签: ios uilabel autolayout