我有一个类似于this poster的问题。然后我使用了jrturton的建议将用于自定义按钮的代码移到viewDidLayoutSubviews中。在收到此错误之前,它一直运行良好:



我对图形一无所知,我唯一能想到的就是放入[self.view layoutSubviews];,但这并不能解决任何问题。当我在 Storyboard 中取消选中“自动布局”时,它可以工作,但是这改变了按钮的尺寸,我想知道是否还有另一种解决方法?

码:

-(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消息处理程序以编程方式调整 Storyboard 创建的 View 框架时,遇到了这个问题。按照异常消息中的指令,我尝试在[self.view layoutIfNeeded]的末尾添加-viewDidLayoutSubviews,然后它起作用了。

07-28 02:36
查看更多