Кадр UIVIEW, границы, центр, источник, когда использовать что?

Если бы это setter, метод и null передается ему, я думаю, что имело бы больше смысла бросать IllegalArgumentException. NullPointerException, кажется, имеет больше смысла в случае, где Вы пытаетесь на самом деле использовать null.

Так, при использовании его и это null, NullPointer. Если это передается в, и это null, IllegalArgument.

194
задан bneely 12 July 2015 в 13:21
поделиться

3 ответа

Ответ Марко выше верен, но просто чтобы расширить вопрос «в каком контексте» ...

кадр - это свойство, которое вы чаще всего используете для обычных Приложения для iPhone. большинство элементов управления будут размещены относительно «содержащего» элемента управления, поэтому frame.origin будет напрямую соответствовать тому, где должен отображаться элемент управления, а frame.size будет определять, насколько большим должен быть элемент управления.

center - это свойство, на котором вы, вероятно, сосредоточитесь для игр и анимации на основе спрайтов, где может происходить движение или масштабирование. По умолчанию анимация и вращение будут основываться на центре UIView. Редко имеет смысл пытаться управлять такими объектами с помощью свойства frame.

bounds - это свойство не является свойством позиционирования, но определяет отображаемую область UIView «относительно» фрейма. По умолчанию это свойство обычно (0, 0, ширина , высота ). Изменение этого свойства позволит вам рисовать за пределами кадра или ограничить рисование меньшей областью внутри кадра. Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

По умолчанию это свойство обычно (0, 0, ширина , высота ). Изменение этого свойства позволит вам рисовать за пределами кадра или ограничить рисование меньшей областью внутри кадра. Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

По умолчанию это свойство обычно (0, 0, ширина , высота ). Изменение этого свойства позволит вам рисовать за пределами кадра или ограничить рисование меньшей областью внутри кадра. Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

высота ). Изменение этого свойства позволит вам рисовать за пределами кадра или ограничить рисование меньшей областью внутри кадра. Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

высота ). Изменение этого свойства позволит вам рисовать за пределами кадра или ограничить рисование меньшей областью внутри кадра. Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

Хорошее обсуждение этого можно найти по ссылке ниже. Этим свойством нечасто манипулируют, если нет особой необходимости в настройке области рисования. Единственным исключением является то, что большинство программ будут использовать [[UIScreen mainScreen] bounds] при запуске, чтобы определить видимую область для приложения и соответствующим образом настроить начальный кадр UIView.

Почему здесь прямоугольник кадра. и прямоугольник границ в UIView?

Надеюсь, это поможет прояснить обстоятельства, при которых может использоваться каждое свойство.

238
ответ дан 23 November 2019 в 05:25
поделиться

Свойства center , bounds и frame взаимосвязаны: изменение одного приведет к обновлению других, поэтому используйте их, как вы хотеть. Например, вместо изменения параметров x / y кадра для повторного центрирования представления просто обновите свойство center .

18
ответ дан 23 November 2019 в 05:25
поделиться

Это связанные значения, которые сохраняются согласованными. методами установки / получения свойств (и с учетом того факта, что кадр является чисто синтезированным значением, не поддерживаемым фактической переменной экземпляра).

Основными уравнениями являются:

frame.origin = center - bounds.size / 2

(то же самое, что и)

center = frame.origin + bounds.size / 2

(и есть еще)

frame.size = bounds.size

Это не код, просто уравнения для выражения инварианта между тремя свойствами. Эти уравнения также предполагают, что преобразование вашего представления является тождеством, что и есть по умолчанию. Если это не так, то границы и центр сохранят то же значение, но рамка может измениться. Если вы не поворачиваете под прямым углом, кадр всегда будет преобразованным видом с точки зрения координат супервизора.

Все это подробно объясняется в полезной мини-библиотеке здесь:

http://bynomial.com/blog/?p=24

36
ответ дан 23 November 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: