Что лучше использовать?Я предпочитаю CGRect.size.width, потому что это выглядит лучше.Но мой коллега говорит, что CGRectGetWidth лучше.
CGRectGetWidth / Height нормализует ширину или высоту перед их возвратом. Нормализация в основном просто проверяет, является ли ширина или высота отрицательной, и отрицает ее, чтобы сделать ее положительной, если это так.
Ответили здесь
Ширина и высота прямоугольника могут быть отрицательными.Я понятия не имею, когда это будет верно на практике, но согласно 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.Вместо этого используйте функции, описанные здесь, для управления прямоугольниками и получения их характеристик.
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.Вместо этого используйте функции, описанные здесь, для управления прямоугольниками и получения их характеристик.