代码之家  ›  专栏  ›  技术社区  ›  William Jockusch

iPhone-UIView的sizeThatFits方法的输入参数

  •  28
  • William Jockusch  · 技术社区  · 14 年前

    - (CGSize)sizeThatFits:(CGSize)size
    

    我不明白size参数的用途。苹果的 documentation 声明它是“接收器的当前大小”

    但接收器大概知道它当前的大小。那为什么要传进去呢?

    当我实验性地传递其他值时,该方法似乎仍然使用接收器的当前大小。

    有人能解释吗?这个参数有什么关系吗?

    2 回复  |  直到 14 年前
        1
  •  26
  •   Costique    14 年前

    首先,这个方法是AppKit legacy(不是用否定的意思)。

    是的,任何视图在任何给定时刻都有一些当前大小,可以从bounds属性中检索它。但在布局过程中,存在一些棘手的情况,即最佳大小取决于不完全静态的因素。以文本标签为例。它可以在一行或多行中流动,行的数量取决于允许的最大宽度。因此,一个可能的UILabel实现可以从传递给sizeThatFits:的CGSize的宽度派生其边界大小,在这种情况下,该大小不是接收器的当前大小,而是一些所需/限制大小。

        2
  •  0
  •   AdamH    14 年前

    它不仅是接收器的大小是您要填充的潜在大小。结果是视图认为对于给定的输入,其大小最能显示其内容 size .

    默认行为是简单地返回 大小 参数(即适合默认视图的大小是您给它的大小)-所以是的,默认情况下这个参数很重要。

    子类可以强制约束如下 width==height 或者其他类似的事情。