首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动布局误差

自动布局误差
EN

Stack Overflow用户
提问于 2013-03-19 01:47:04
回答 1查看 7K关注 0票数 26

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

“‘NSInternalInconsistencyException”,原因:“将-viewDidLayoutSubviews发送到视图控制器后仍然需要自动布局。视图控制器的实现需要将-layoutSubviews发送到视图以调用自动布局。”

我对图形一无所知,我唯一能想到的就是放[self.view layoutSubviews];,但这并没有解决任何问题。当我在我的故事板中不检查“自动布局”时,它起了作用,但这改变了我的按钮的尺寸,我想知道是否有其他方法来修复它?

代码:

代码语言:javascript
复制
-(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];
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-02 07:28:13

最近,我遇到了这个问题,当时我想通过提供viewDidLayoutSubviews消息处理程序,以编程方式调整由情节提要创建的视图的框架。按照异常消息的指令,我尝试在[self.view layoutIfNeeded]的末尾添加-viewDidLayoutSubviews,然后它就开始工作了。

票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15490140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档