У меня была проблема, аналогичная этому плакату. . И я воспользовался предложением jrturton перенести код настройки кнопок в viewDidLayoutSubviews
. Он работал хорошо, пока я не получил эту ошибку:
«NSInternalInconsistencyException», причина: «Автоматическая компоновка по-прежнему требуется после отправки -viewDidLayoutSubviews в контроллер представления. Реализация ViewController должна отправить -layoutSubviews в представление, чтобы вызвать автоматическую компоновку.'
Я очень плохо разбираюсь в графике, и единственное, что я мог придумать, это поставить [self.view layoutSubviews];
, но это ничего не исправило. Это сработало, когда я снял флажок «Автоматический макет» в своей раскадровке, но это изменило размеры моих кнопок, и мне было интересно, есть ли другой способ исправить это?
Код:
-(void)viewDidLayoutSubviews {
NSArray *arrayOfButtons = [NSArray arrayWithObjects:self.decimalButton, self.buttonOne, self.buttonTwo, self.buttonThree, nil];
for (UIButton *button in arrayOfButtons) {
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
button.layer.borderWidth = 0.25f;
button.layer.borderColor = [[UIColor grayColor] CGColor];
CAGradientLayer *btnGradient = [CAGradientLayer layer];
btnGradient.frame = button.bounds;
btnGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:122.0f / 255.0f green:188.0f / 255.0f blue:255.0f / 255.0f alpha:1.0f] CGColor],
(id)[[UIColor colorWithRed:96.0f / 255.0f green:171.0f / 255.0f blue:248.0f / 255.0f alpha:1.0f] CGColor],
nil];
[button.layer insertSublayer:btnGradient atIndex:0];
}
}
[super viewDidLayoutSubviews]
? Документы говорят, что реализация по умолчанию ничего не делает, но стоит попробовать. - person Chris Wagner   schedule 19.03.2013