Что делает управление происхождением в конструкторе интерфейсов? - PullRequest
5 голосов
/ 28 февраля 2012

В конструкторе интерфейсов в контролере распорок и пружин имеется элемент управления с именем происхождения. Что это делает и почему изменение его для одного объекта меняет его для ВСЕХ объектов?

Origin Control

Насколько я могу судить, это не оказывает реального влияния на происхождение прямоугольника рамки, как следует из названия. Позвольте мне объяснить:

Если выбрать UILabel и изменить начало координат в правом верхнем углу, как показано на фотографии выше, начало координат кадра в точке (280,11). Однако в коде, когда вы фактически запрашиваете фрейм о его происхождении, он задается как (211,11), что соответствует верхнему левому углу фрейма. Следовательно, изменение источника фрейма в конструкторе интерфейса, похоже, абсолютно ничего не делает! Что здесь происходит?!

Ответы [ 2 ]

7 голосов
/ 28 февраля 2012

Ничего не происходит, если вы не редактируете поля, непосредственно прилегающие к нему.Вы заметите, что координаты X и Y меняются в зависимости от точки привязки, которую вы выбрали для нее;это облегчает вам выравнивание объекта по его центру или краю.

Причина, по которой он изменяется для всех объектов, заключается в том, что он на самом деле ничего не влияет на сам объект;«реальная» система координат остается неизменной независимо от отображаемых там значений X и Y.

В OS X, как говорит Натан, система координат имеет свое происхождение слева внизу, и ее координаты увеличиваются и увеличиваются доправо;в iOS начало координат слева вверху, а его координаты увеличиваются снизу и справа.

3 голосов
/ 28 февраля 2012

У меня нет точного ответа, но я думаю, что это связано с кодом источника, который вы установили для этого объекта, например (просто пример)

- (void) Button {

       CGRect frame = button.frame;
       frame.origin.x = 500; // new x coordinate
       frame.origin.y = 500; // new y coordinate
       button.frame = frame;
}

И, возможно, естьспособ установить frame.origin в настройку, которая будет связывать его с инструментом источника в InterFace Builder

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html

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

Если вы были вынуждены нарисовать весь ваш контент в экранных координатах - система координат, источник которой расположен внижний левый угол основного экрана компьютера - ваш код будет довольно сложным.Чтобы упростить задачу, Какао устанавливает локальную систему координат, источник которой равен источнику окна или вида, который собирается нарисовать.Последующие вызовы рисования внутри окна или вида происходят относительно этой локальной системы координат.Как только код заканчивает рисование, Какао и соответствующая графическая система преобразуют координаты в локальные координаты обратно в координаты экрана, чтобы контент можно было комбинировать с контентом из других приложений и отправлять на графическое оборудование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...