这种方法的签名是:
- (CGSize)sizeThatFits:(CGSize)size
Run Code Online (Sandbox Code Playgroud)
我不明白size参数的用途.Apple的文档声明它是"接收器的当前大小".
但接收器可能知道它的当前大小.那为什么需要传递呢?
当我通过实验传递其他值时,该方法似乎仍然使用接收器的当前大小.
谁能解释一下?这个参数有什么关系吗?
Cos*_*que 26
首先,这种方法是AppKit遗留(不是在负面意义上).
是的,任何视图在任何给定时刻都有一些当前大小,并且可以从bounds属性中检索它.但是在布局期间,当最佳尺寸取决于非静态因素时,存在棘手的情况.以文本标签为例.它可以在一条或多条线中流动,并且线的数量可以取决于最大允许宽度.因此,可能的UILabel实现可以从传递给sizeThatFits:的CGSize的宽度派生其边界大小,在这种情况下,该大小不是字面上接收器的当前大小,而是一些期望/限制大小.
因此任何UIView子类都可以实现-sizeThatFits:因为它看起来合适(双关语),甚至可以自由地忽略size参数.大多数情况下,当我必须实现此方法时,我会忽略它,因为我可以从视图的内部状态计算它,但在更复杂的情况下,您可能需要使用size参数来暗示自己在布局中的某些限制.
| 归档时间: |
|
| 查看次数: |
8992 次 |
| 最近记录: |