我有一个我构建的测验应用程序,并且已经获得了一些问题的错误报告,图像的答案没有正确布局。我遇到的问题是在开发过程中不会发生这种情况。错误报告是第二代Ipod触摸运行4.2.1我设法得到一个用于测试。
以下是开发和发行版本的截图。
http://farm8.staticflickr.com/7169/6501675055_1ea8c3d18b.jpg
http://farm8.staticflickr.com/7015/6501727253_ddc0fb616f.jpg
(显然我不够信任发布图片)
这是我写的创建和布局这些按钮的内容
for (int i =0; i < question.buttonTitles.count; i++) {
NSLog(@"add images for answer: %@", [question.buttonTitles objectAtIndex:i]);
UIImage * image = [UIImage imageNamed:[question.buttonTitles objectAtIndex:i]];
float x = 0.0f;
float y = 0.0f;
float width = image.size.width;;
float height = image.size.height;
NSLog(@"%@", NSStringFromCGSize(image.size));
if (question.buttonTitles.count != 4) {
x = (293.0 - width) / 2.0;
y = questionLabel.frame.origin.y + questionLabel.frame.size.height + (i * height) + (12 * (i));
}else{
switch (i) {
case 0:
x = (self.frame.size.width/2) - 7 - width;
y = (self.frame.size.height/2 + questionLabel.frame.size.height/2) - 7 - height;
break;
case 1:
x = (self.frame.size.width/2) + 7;
y = (self.frame.size.height/2 + questionLabel.frame.size.height/2) - 7 - height;
break;
case 2:
x = (self.frame.size.width/2) - 7 - width;
y = (self.frame.size.height/2 + questionLabel.frame.size.height/2) + 7;
break;
case 3:
x = (self.frame.size.width/2) + 7;
y = (self.frame.size.height/2 + questionLabel.frame.size.height/2) + 7;
break;
}
}
UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
imageButton.frame = CGRectMake(x, y, width, height);
[imageButton setImage:image forState:UIControlStateNormal];
[self addSubview:imageButton];
SEL functionName;
functionName = NSSelectorFromString([buttonFunctions objectAtIndex: i]);
[imageButton addTarget:self action: functionName
forControlEvents:UIControlEventTouchUpInside];
}
答案 0 :(得分:0)
Xcode 4.2附带的一个编译器中存在一个错误,它错误地编译了armv6的缩略图代码。其中一种表现方式是干扰CGRect
和类似的结构,这显然会破坏布局。
临时解决方法是禁用armv6的拇指,但该错误已在Xcode 4.2.1中修复。自从将应用程序提交到App Store后,您是否已从4.2升级到4.2.1?这可能就是为什么你现在无法重现这个错误的原因。
您可以通过使用最新版本的Xcode重新编译并重新提交来修复该错误。我会回滚到早期版本的Xcode,并尽可能事先用实际设备进行验证。