У меня только что была точно такая же проблема .Цвет фона не отображался, хотя я установил правильный кадр и установил белый цвет фона в моем пользовательском методе инициализации, а также в моем методе viewWillAppear
.Я также проверил, что ничто не покрывало это.
Затем я нашел решение : вместо этого я установил цвет фона viewDidAppear
, и все было в порядке:
- (void)viewDidAppear:(BOOL)animated
{
[self.view setBackgroundColor:[UIColor whiteColor]];
self.view.frame = _viewFrame;
}
(_viewFrame
CGRect былпередается моему методу init.)
Другой вариант - установить его в - (void)viewDidLayoutSubviews
, в зависимости от того, когда и как именно вы хотите установить цвет фона.
Если быть полностью честным,Я не понимаю (пока), почему установка цвета фона в viewDidAppear
работала, пока он не работал в методе init, и код для его установки был одинаковым в обоих местах.
Надеюсь, это поможет,
Эрик
ОБНОВЛЕНИЕ: Это как-то связано с рамкой вида .Когда я устанавливаю рамку моего вида в моем методе init, тогда установка цвета фона в viewDidAppear больше не дает желаемого эффекта.Это даже в том случае, если я установил фрейм моего представления после моего метода построения представления, который создает вложенные представления.Таким образом, настоящая загадка: между точкой, в которой я закончил создание моего представления, и точкой, где он отображается, что в жизненном цикле представления заставляет кадр представления быть сброшенным к чему-то неправильному?
Итак, ответ на самом деле таков: он будет работать до тех пор, пока ваш фрейм установлен правильно и ваш видимость видна.Просто проверяйте рамку вашего представления на протяжении жизненного цикла представления, чтобы убедиться, что оно правильное.
Tricky ...