我和这张海报有类似的问题。我使用 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];
}
}