相关疑难解决方法(0)

返回主视图控制器时,"仍然需要自动布局..."崩溃

我的应用程序启动了一个主菜单,它是被UIViewController调用的自定义子类LVSMainViewController.它嵌入在UINavigationController故事板中设置为初始VC的a中.LVSMainViewController实施-viewDidLayoutSubviews.

点击按钮会将用户带到应用程序的不同部分(不同的VC).用户通过连接到推送segue的按钮返回主菜单.但是,当应用程序再次加载主菜单VC时,它会崩溃并显示以下消息:

2014-08-28 16:11:14.122*断言失败 - [UIView layoutSublayersOfLayer:],/ SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8803

2014-08-28 16:11:14.257*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'将-viewDidLayoutSubviews发送到视图控制器后仍需要自动布局.LVSMainViewController的实现需要将-layoutSubviews发送到视图以调用自动布局.

SO上的其他帖子在以编程方式设置自动布局约束时报告相同的错误(我没有这样做,虽然我在故事板中使用自动布局)和/或使用时UITableView(我在主菜单VC中没有使用)或者它所代表的VC,尽管我在应用程序的其他地方使用它).(见这里这里.)

其他拼图:

  1. 我试着[self.view layoutSubviews];在最后添加-viewDidLayoutSubviews.当我这样做时它不会崩溃.但似乎是不明智的,因为苹果的文件说,

    您不应该直接调用此方法.如果要强制进行布局更新,请在下次绘图更新之前调用setNeedsLayout方法.

  2. 如果我[self.view setNeedsLayout];在最后添加-viewDidLayoutSubviews,应用程序崩溃,首先加载主菜单VC,而不是当我离开它并返回.

可能是什么造成的?

exception ios autolayout

6
推荐指数
2
解决办法
3113
查看次数

在启用了故事板自动布局的iOS6中无法自定义UIButton

我遇到了奇怪的行为.我正在使用我在控制器中设置的自定义样式按钮:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.signOutButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [self.signOutButton setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];

    CAGradientLayer *btnGradient = [CAGradientLayer layer];
    btnGradient.frame = self.signOutButton.bounds;
    btnGradient.colors = [NSArray arrayWithObjects:
                          (id)[[UIColor colorWithRed:102.0f / 255.0f green:102.0f / 255.0f blue:102.0f / 255.0f alpha:1.0f] CGColor],
                          (id)[[UIColor colorWithRed:51.0f / 255.0f green:51.0f / 255.0f blue:51.0f / 255.0f alpha:1.0f] CGColor],
                          nil];

    [self.signOutButton.layer insertSublayer:btnGradient atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)

它在iOS 5中运行正常.但是如果我在iOS 6中使用启用的Autolayout for Storyboard构建这个,那么我的风格中的渐变消失/变得透明(但标题仍然可见).

如果我禁用自动布局 - 渐变回来了.有人可以用autolayout解释这种行为吗?

gradient custom-controls uibutton ios ios6

2
推荐指数
1
解决办法
1738
查看次数

标签 统计

ios ×2

autolayout ×1

custom-controls ×1

exception ×1

gradient ×1

ios6 ×1

uibutton ×1