2010-04-14 84 views
0

iPhone:应用CGAffineTransformMakeRotation的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,清理所有目标。程序一直运行良好,直到我刚刚添加这些标签。试图删除标签,读取和重新连接Outlet。

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

干杯!

+0

您的错误消息意味着错误是在数组的管理 - 有一个数组与一个元素,并试图使用第二个元素(与索引1)。 这就是为什么我认为你在错误的地方搜索错误。也许,你的代码中有一些数组? – kpower 2010-04-14 03:03:42

+0

感谢您的回复。我做。我也一直在将标签添加到视图中作为子视图 - 但为什么.transform会影响到这一点?除子视图外,标签不在任何数组中。尝试在我初始化数组之前放入这些代码,仍然崩溃。没有任何数组只有0或1的大小..似乎是与UILabel本身的问题! – quantumpotato 2010-04-14 03:56:07

+0

你有没有尝试过让@“Test”成为[NSString stringWithString:@“Test”]?可能会有一些奇怪的事情发生,静态字符串正在对标签/ Transform进行一些无效初始化。通过创建一个新的字符串(在为@“Test”完成的奇怪初始化之外),这可能会在UIView处理转换的方式上有所不同。我知道。有点出来,但很容易尝试。 – 2010-04-14 04:37:54

回答

0

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

您还应该检查nib文件(在Interface Builder中或使用ibtool)以查看是否存在与该特定标签混杂的东西。为了测试这个问题,你可以在初始化时用另一个标签替换它的顺序,以查看问题是否与该特定标签相关,或者是否与最后一个位置中的任何标签或对象相关。

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

+0

谢谢大家的答案。比较, \t newt = [[gametoken alloc] init]; \t [gametokens2 addObject:newt]; \t [newt release]; 而不是在一个for循环的伎俩。不知道为什么......但它现在有效。在访问该对象的索引1时发生崩溃。不知道为什么标签会与此相关。奇怪的记忆错误? – quantumpotato 2010-04-15 15:47:46