【问题标题】:CGRectGetWidth vs CGRect.size.widthCGRectGetWidth 与 CGRect.size.width
【发布时间】:2011-05-11 21:25:45
【问题描述】:

哪个更好用?我更喜欢 CGRect.size.width 因为它看起来更好。但是,我的同事说 CGRectGetWidth 更好。

【问题讨论】:

    标签: objective-c uiview cgrect


    【解决方案1】:

    CGRectGetWidth/Height 将在返回它们之前标准化宽度或高度。归一化基本上只是检查宽度或高度是否为负数,如果是,则将其取反使其为正数。

    Answered here

    【讨论】:

    • 宽度或高度怎么可能是负数?
    • 我不知道。这对我来说也没有意义,但这是我知道的唯一答案。我自己使用 CGRect 结构,就像你一样,从来没有遇到过问题。您应该挑战您的同事,向您展示一个重要的实例,然后将答案发回此处!
    • 仅供参考,我认为他们将原点 (0,0) 放在中心,所以左右边缘通常是负的,但右边缘和下边缘是正的。
    • developer.apple.com/library/mac/#documentation/graphicsimaging/… 提供了对负值的一些解释。 “因此,您的应用程序应避免直接读写存储在CGRect 数据结构中的数据。”
    【解决方案2】:

    矩形的宽度和高度可以是负数。我不知道这在实践中何时会成为现实,但根据Apple docs

    CGGeometry Reference 定义了几何图元的结构和 对它们进行操作的函数。数据结构CGPoint表示 二维坐标系中的一个点。数据结构 CGRect 表示矩形的位置和尺寸。数据 结构体CGSize表示宽高的尺寸。

    存储在 CGRect 数据结构中的高度和宽度可以是 消极的。例如,原点为 [0.0, 0.0] 的矩形和 [10.0,10.0] 的大小完全等同于具有 [10.0, 10.0] 的原点和 [-10.0,-10.0] 的大小。你的申请 可以标准化一个矩形——即保证高度和宽度 存储为正值——通过调用 CGRectStandardize 功能。本参考资料中描述的所有函数都采用 CGRect 作为输入的数据结构隐式标准化这些矩形 在计算他们的结果之前。 因此,您的应用程序 应避免直接读写存储在 CGRect 数据结构。相反,使用此处描述的功能 操作矩形并检索它们的特征。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2015-12-10
      • 2010-09-07
      相关资源
      最近更新 更多