【发布时间】:2010-04-14 02:22:11
【问题描述】:
在
-(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)。这就是为什么我认为你在错误的地方搜索错误。也许,你的代码中有一些数组?
-
感谢您的回复。我愿意。我也一直在将标签作为子视图添加到视图中 - 但为什么 .transform 会影响这一点?除子视图外,标签不在任何数组中。在初始化数组之前尝试放置此代码,但仍然崩溃。没有任何只有 0 或 1 大小的数组.. 似乎是 UILabel 本身的问题!
-
您是否尝试过将@"Test" 设为 [NSString stringWithString:@"Test"]?在静态字符串对标签/转换进行一些无效初始化的情况下,可能会发生一些奇怪的事情。通过创建一个新字符串(在为 @"Test" 完成的奇怪初始化之外),这可能会对 UIView 处理转换的方式产生影响。我知道。有一点,但很容易尝试。
-
请使用
M_PI/2而不是1.570796326794897。
标签: iphone objective-c xcode interface-builder uilabel