#ios4 #uicolor #cs193p
#ios4 #пользовательский цвет #cs193p
Вопрос:
Это, вероятно, простой вопрос, но я действительно не могу на него ответить.
Я завершил одно из демонстрационных приложений, показанных в классе CS193p. По сути, это очень простое представление с пользовательским подвидом и пользовательским подвидом, которое выполняет некоторую отрисовку в зависимости от значения ползунка. (Это смайлик, довольно круто!)
Я решил добавить протокол делегирования к пользовательскому представлению, который возвращает объект UIColor, чтобы, когда ползунок делал лицо счастливым, он также менял фон представления с красного на зеленый.
Это работает нормально, но фон начинается как белый! Как только я касаюсь ползунка, стрелка становится красной и работает нормально… но он начинается как БЕЛЫЙ?! Почему?!!
Ответ №1:
Не видя вашего кода, я бы предположил, что цвет фона устанавливается в файле nib. Если вы не используете Interface Builder, есть вероятность, что значение по умолчанию для фона белое, но я не уверен в этом.
Я бы проверил ваш файл nib и посмотрел, на какой цвет фона установлен в представлении. кроме того, я бы установил цвет фона для представления в вашем методе viewDidLoad таким, каким вы хотите, чтобы он начинался.
Не стесняйтесь публиковать часть своего кода, если я сильно отклоняюсь от базы…
Комментарии:
1. Привет, MobileVet, спасибо за ваш ответ. На самом деле у меня ранее был установлен другой цвет фона (синий), но затем я решил реализовать эффект преобразования красного в зеленый в качестве упражнения для понимания делегирования. Я попытался вернуть ему значение «по умолчанию» в Interface builder, и я получаю поведение, о котором я упоминал ранее, оно начинается как белое. Это просто немного расстраивает, потому что у меня есть метод, который окрашивает фон в красный цвет в качестве последнего вызова в методе drawRect моего представления. Он должен во что бы то ни стало выполнить этот вызов и покрасить его в красный цвет! Это, очевидно, работает, поскольку мой смайлик отображается с грустной улыбкой.
2. Хм, я думаю, что я в недоумении, не видя какого-либо кода. Извините.
Ответ №2:
Цвет фона изначально белый, потому что изменение backgroundcolor
не приводит к немедленному изменению цвета. Цвет изменяется при следующем перерисовывании вида, например, при перемещении ползунка.