Изменить цвет объекта в Xcode

Я новичок в Xcode (разработка для Mac, а не для iOS), и по какой-то причине я не могу понять, как даже изменить цвет любого объекта (текст, фон или что-то еще). Кажется, что каждый сайт говорит, что нужно щелкнуть по объекту, перейти к инспектору атрибутов, и все эти параметры находятся в разделе «Просмотр». Однако в моем Xcode (5.1.1) все, что отображается в разделе «Вид», - это тег, кольцо фокусировки, рисование и автоматическое изменение размера. Я упускаю что-то очевидное?


person zigzaugg    schedule 15.08.2014    source источник
comment
Цвет какого объекта вы пытаетесь изменить? Может быть полезно выполнить быстрый поиск этого объекта в Google + изменить цвет фона.   -  person Jared Price    schedule 15.08.2014
comment
ярлыки и кнопки. И это для фона, а также цвет текста. Кроме того, я определенно погуглил. Это пришло к тому, что я сказал, в разделе просмотра Инспектора атрибутов. Только его там нет.   -  person zigzaugg    schedule 15.08.2014
comment
@zigzaugg Окна Mac, как правило, имеют иерархию представлений. Выбор нужного объекта на холсте может раздражать. Вы получаете окружающий вид объекта вместо объекта, который вы хотите. Используйте панель перехода, которая находится над холстом, чтобы получить доступ к нужному объекту.   -  person Mark Szymczyk    schedule 16.08.2014
comment
Я попробовал все иерархии объектов на панели переходов, и ни в одной из них не было того, что я искал. Я считаю, что выбранный ответ ниже объясняет, почему. Спасибо хоть!   -  person zigzaugg    schedule 16.08.2014


Ответы (2)


В OS X NSView не имеет внутреннего свойства backgroundColor. Таким образом, вы не можете установить цвет представления из Интерфейсного Разработчика. Вы должны создать подкласс NSView и переопределить -drawRect: или -updateLayer, чтобы сделать его желаемым цветом. Даже в этом случае этот цвет не будет отображаться в Interface Builder. (Это изменилось в Xcode 6, который все еще находится в стадии бета-тестирования на момент написания этой статьи.)

Это несколько раздражает? Ага. Но так оно и есть.

Что касается изменения текста объекта, вы должны иметь возможность сделать это из инспектора атрибутов, но только если это что-то, что уже имеет текст (например, текстовое поле, текстовое представление или кнопка). Произвольное пользовательское представление не имеет текста, поэтому вы не можете установить его в Interface Builder.

person BJ Homer    schedule 15.08.2014
comment
Вау, это довольно смешно. Рад слышать, что они планируют это исправить! И спасибо, что сообщили мне. И я имел в виду цвет текста, я понимаю, как изменить текст. - person zigzaugg; 16.08.2014
comment
эй, БиДжей... насколько я помню, никто не пропускал NSView, ничего не делая, пока не появился UIView и не смог что-то делать... - person Grady Player; 16.08.2014

Вы должны легко установить цвет фона любого элемента пользовательского интерфейса программно.

[viewObject setBackgroundColor:[UIColor greenColor]];

Что касается редактирования xib для OSX, я не уверен. Я занимался только разработкой для iOS.

person Jared Price    schedule 15.08.2014
comment
Я просматриваю MainMenu.xib. И да, утилиты открыты. И, как я сказал в своем посте, я в инспекторе атрибутов. Это просто фон и цвет текста, как все говорят. - person zigzaugg; 15.08.2014
comment
Может быть, я не знаю, что я делаю тогда. Я просто следовал инструкциям из этого. И это, которое часть учебника объясняет все, используя .xib. Это неправильно? - person zigzaugg; 15.08.2014
comment
ОП просит OS X, а не IOS. - person mohacs; 15.08.2014
comment
Прошу прощения, я забыл, что вы разрабатываете для Mac. Разве XCode не использует раскадровки для разработки под Mac? Код должен быть как минимум похожим. - person Jared Price; 15.08.2014
comment
но есть ли способ сделать это без части кодирования? У меня нет проблем с этим, просто изменение большого количества цветов было бы намного быстрее без кодирования. И насколько я знаю, он не использует раскадровки. Опять же, я только сегодня начал использовать XCode. - person zigzaugg; 15.08.2014
comment
NSView не имеет свойства backgroundColor, поэтому, естественно, оно также не отображается в xib или раскадровке. - person BJ Homer; 16.08.2014