Какая связь между началом кадра UIView и его центром?

Скажем, я создаю анимацию и хочу переместить центр UIView на определенный CGPoint, который у меня есть. Я знаю, каким должен быть центр, только вышеупомянутый CGPoint, и я знаю ширину и высоту, которые мне нужны, но когда я перехожу к созданию рамки для моего UIView, я понятия не имею, что установить для x и y для origin.

Должен ли я просто установить 0, 0 или что-нибудь еще? Это имеет значение?

Должен ли я просто думать о настройке center как о другом методе установки источника? Мне хочется, чтобы у CGRect был экземпляр с center в качестве опции.

Предыдущий вопрос касался в некоторой степени аналогичного вопроса, но он рассматривал их как три отдельных объекта, а не как работать с центром при создании представления.


person Doug Smith    schedule 31.03.2015    source источник
comment
возможный дубликат рамки, границ и центра UIView   -  person Stuart    schedule 31.03.2015


Ответы (1)


Да, продолжайте и установите начало координат исходного кадра на что угодно, поскольку последующая установка центра в любом случае эффективно переместит это начало. Нередко инициализировать представления кадром CGRectZero, когда он будет полностью настроен позже.

frame на самом деле просто вычисляемое свойство, основанное на center и bounds представления, и поэтому все три внутренне связаны, когда дело доходит до макета представления. Справочник по классу UIView говорит об этом следующее:

Геометрия вида определяется его свойствами frame, bounds и center. frame определяет исходную точку и размеры вида в системе координат своего супервизора и обычно используется во время компоновки для настройки размера или положения вида. Свойство center можно использовать для регулировки положения представления без изменения его размера. Границы определяют внутренние размеры вида, как они видны, и используются почти исключительно в пользовательском коде рисования. Часть размера frame и ограничивающих прямоугольников соединяется вместе, так что изменение размера любого прямоугольника обновляет размер обоих.

person Stuart    schedule 31.03.2015