自动布局错误

我有一个类似的问题, 这张海报 。 我用jrturton的build议将用于定制button的代码移动到viewDidLayoutSubviews 。 直到我收到这个错误,它运行良好:

'NSInternalInconsistencyException',原因:'在向视图控制器发送-viewDidLayoutSubviews之后仍然需要自动布局。 ViewController的实现需要发送-layoutSubviews到视图来调用自动布局。

我对graphics非常无知,唯一能想到的就是把[self.view layoutSubviews]; 但是这并没有解决任何问题。 当我取消选中“故事板”中的“自动布局”,但它改变了我的button的尺寸,我想知道是否有另一种方法来解决它?

码:

 -(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]; } } 

我最近有这个问题,当我想通过提供一个viewDidLayoutSubviews消息处理程序以编程方式调整故事板创build的视图的框架。 遵循exception消息的指令,我试图在-viewDidLayoutSubviews的末尾添加[self.view layoutIfNeeded] ,然后运行。