iPhone:UILabel应用CGAffineTransformMakeRotation导致神秘崩溃

时间:2010-04-14 02:22:11

标签: iphone objective-c xcode interface-builder uilabel

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil parentController:(GameViewController *)myGameController{

有一系列转换标签,如下所示:

    deg90 = 1.570796326794897;
//....transforms
    background.center = CGPointMake(160,230);
    background.transform = CGAffineTransformMakeRotation(deg90);

    BetLabel.text = @"test";       
    BetLabel.transform = CGAffineTransformMakeRotation(deg90);

最后一行让我崩溃:

2010-04-13 21:04:47.858 Game[1204:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)'
2010-04-13 21:04:47.893 Game[1204:207] Stack: (
    864992541,
    859229716, (lots of numbers)

但如果我发表评论,我会让文字变好。

更新:哦,哦,刚做了一个测试..原来其他转换是在UIImageViews上。显然在此xib中旋转标签会导致崩溃。

但是在另一个文件中,转换工作正常:

    newprofileentry.transform = CGAffineTransformMakeRotation(1.570796326794897);
    playerb0.transform = CGAffineTransformMakeRotation(1.570796326794897);
    playerb1.transform = CGAffineTransformMakeRotation(1.570796326794897);

尝试用deg90代替完整的浮动值,仍然是同样的崩溃。

尝试清理缓存,重新启动IB和Xcode,清除所有目标。程序运行正常,直到我添加这些标签。尝试删除标签,读取并重新连接插座。

感谢阅读,希望有人对此有所了解。

干杯!

1 个答案:

答案 0 :(得分:0)

我建议将转换移出initWithNib:。您可能正在尝试修改尚不存在的内容,因为笔尖中的对象仍在初始化。

您还应该检查nib文件(在Interface Builder中或使用ibtool)以查看是否存在使用该特定标签进行加扰的内容。要测试它,您可以在初始化时将其顺序换成另一个标签,以查看问题是否与该特定标签有关,或者它是否与最后位置中的任何标签或对象有关。

在上下文中发布更多代码可能会有所帮助。