CGRectGetWidth与CGRect.size.width

ma1*_*w28 29 objective-c uiview cgrect

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

Nek*_*ios 21

CGRectGetWidth/Height将在返回之前规范化宽度或高度.标准化基本上只是检查宽度或高度是否为负,如果是,则否定它以使其为正.

这里回答

  • https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html提供了负值的一些解释."因此,您的应用程序应避免直接读取和写入存储在`CGRect`数据结构中的数据." (6认同)
  • 我不知道.这对我来说也没有意义,但这是我所知道的唯一答案.我使用CGRect结构,就像你一样,我自己也没有遇到过问题.你应该挑战你的同事,告诉你一个重要的实例,然后把这个答案发回这里! (3认同)

mem*_*ons 11

rect的宽度和高度可以是负数.我不知道这在实践中何时会成真,但根据Apple文档:

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数据结构中的数据.相反,使用此处描述的函数来操纵矩形并检索它们的特征.