Изменение Backgroundcolor для UIView через intead кода XIB в IOS - PullRequest
5 голосов
/ 04 ноября 2011

Я создал проект на основе окна, затем я добавил новый viewcontroller с проверенным xib для пользовательского интерфейса, а затем, войдя в xib, я сделал некоторые настройки для вида, добавил несколько кнопок и также изменил цвет фона,

Но теперь я хочу изменить цвет фона представления через код, а не через xib,

, поэтому я попытался сделать это в моем

-(void)viewDidLoad
{
    UIColor *myColor = [UIColor colorWithRed:(128.0 / 255.0) green:(90.0 / 255.0) blue:(200.0 / 255.0) alpha: 1];
    self.view.backgroundcolor = mycolor;

}

, но ничего не произошло,поэтому, пожалуйста, помогите мне друзья

Спасибо и С уважением Ranjit

Ответы [ 4 ]

14 голосов
/ 04 ноября 2011

То, что вы ввели, правильно. Он должен работать. Но могу ли я добавить некоторые исправления - определить макросы, это позволяет легко указывать цвета -

#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]
#define RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]

[self.view setBackgroundColor: RGB(135, 182, 44)]; //will give a UIColor objct
1 голос
/ 02 мая 2016

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

Например, если вы установите красный цвет фона, даже если вы измените его программно, он останется прочитанным, и не только это, но такие вещи, как view.layer.cornerRadius, также не будут работать.

Таким образом, в основном измените цвет фона представления в файле XIB на значение по умолчанию и установите его программно.

1 голос
/ 04 марта 2014

Я столкнулся с подобной проблемой, и я думаю, что знаю причину. Вы устанавливаете backgroundColor в viewDidLoad. Я обнаружил, что любые изменения, внесенные в цвет фона, стираются к тому времени, когда код достигает viewDidAppear:.

Если вы переместите настройку на viewDidAppear:, она должна работать.

В качестве альтернативы, вы можете сделать так, чтобы он устанавливал цвет в основной нити.

[[NSOperationQueue mainQueue] addOperationWithBlock:
 ^{
     [UIColor colorWithRed:(128.0 / 255.0) green:(90.0 / 255.0) blue:(200.0 / 255.0) alpha: 1];
 }];
0 голосов
/ 04 ноября 2011

Должно быть что-то не так с вашим кодом, это способ сделать это.Попробуйте распечатать self.view с NSLog, это действительный объект?Вы уверены, что код вызывается?Это представление действительно в иерархии представлений?

...