addSubview 崩溃 iOS 5.1 但不是 6.1

Posted

技术标签:

【中文标题】addSubview 崩溃 iOS 5.1 但不是 6.1【英文标题】:addSubview crashes iOS 5.1 but not 6.1 【发布时间】:2013-04-16 02:27:47 【问题描述】:

以下内容在 6.1 中运行良好,但应用在 5.1 中崩溃...

weeklyHeaderViewController =[[WeeklyHeaderViewController alloc] init];
[self.view addSubview:weeklyHeaderViewController.view];

这是一个 iPad 应用程序,视图为 939x31 .xib,包含 7 个 UILabel 对。控制器的 viewDidLoad 方法在 7 对之间插入一个 4x30 图像分隔符,然后将视图移动到屏幕底部的位置。

我可以通过 initWithNibName 对其进行跟踪,因此它似乎分配得很好。它在 addSubview 处崩溃,并且永远不会到达 viewDidLoad 方法。

关于 5.1,我应该在这里缺少什么吗?

任何建议将不胜感激。

谢谢,

约翰

//  WeeklyHeaderViewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)  

    
    return self;


- (void)viewDidLoad 
    [super viewDidLoad];
    CGRect myImageRect = CGRectMake(131, 0, 4, 30);
    UIImageView *image = [[UIImageView alloc] initWithFrame:myImageRect];
    [image setImage:[UIImage imageNamed:@"weeklyDaySeparator.png"]];
    [self.view addSubview:image];
    [image release];

    myImageRect = CGRectMake(266, 0, 4, 30);
    image = [[UIImageView alloc] initWithFrame:myImageRect];
    [image setImage:[UIImage imageNamed:@"weeklyDaySeparator.png"]];
    self.view addSubview:image];
    [image release];

    myImageRect = CGRectMake(400, 0, 4, 30);
    image = [[UIImageView alloc] initWithFrame:myImageRect];
    [image setImage:[UIImage imageNamed:@"weeklyDaySeparator.png"]];
    [self.view addSubview:image];
    [image release];

    myImageRect = CGRectMake(535, 0, 4, 30);
    image = [[UIImageView alloc] initWithFrame:myImageRect];
    [image setImage:[UIImage imageNamed:@"weeklyDaySeparator.png"]];
    [self.view addSubview:image];
    [image release];

    myImageRect = CGRectMake(670, 0, 4, 30);
    image = [[UIImageView alloc] initWithFrame:myImageRect];
    [image setImage:[UIImage imageNamed:@"weeklyDaySeparator.png"]];
    [self.view addSubview:image];
    [image release];

    myImageRect = CGRectMake(804, 0, 4, 30);
    image = [[UIImageView alloc] initWithFrame:myImageRect];
    [image setImage:[UIImage imageNamed:@"weeklyDaySeparator.png"]];
    [self.view addSubview:image];
    [image release];

    self.view.frame = CGRectMake(74, 687-14, self.view.frame.size.width, self.view.frame.size.height);

【问题讨论】:

也许你在 weekHeaderViewController.xib 或其视图中使用了自动布局 显示的错误是什么? ios初学者,就是这样!我总是忘记那件事。谢谢!如果您希望得到答案,请继续并让您的评论成为答案。 【参考方案1】:

感谢 iOSBegginer 提醒我在我的 xib 中取消选中 AutoLayout。

【讨论】:

以上是关于addSubview 崩溃 iOS 5.1 但不是 6.1的主要内容,如果未能解决你的问题,请参考以下文章

Firebase initWithUrl 在 iOS 5.1 上崩溃

为啥这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?

JSONKit 崩溃:iPad 视网膜 64 位设备模拟器中的 iOS 7 Xcode 5.1

UITableView addsubview 崩溃

使用 AutoLayout addSubview 到 UITableView 后崩溃

发生 IBAction 时,Swift addsubview 和应用程序崩溃