【发布时间】:2013-10-28 13:56:23
【问题描述】:
我正在制作一个简单的抽认卡应用程序。这是我的一个应用故事板的部分截图:
它在两个按钮(“yesButton”、“noButton”)之上包含一个 UIImageView(“turnImage”),以及一个覆盖整个视图并与所有其他元素重叠的附加第三个按钮(在此屏幕截图中不可见) .最初显示此视图时,两个按钮上的图像设置为 nil,并且 UIImageView 设置为显示“点击更改”图形(第三个不可见按钮实际捕捉点击):
[yesButton setImage:nil forState:UIControlStateDisabled];
[noButton setImage:nil forState:UIControlStateDisabled];
turnImage.image = [UIImage imageNamed:@"card-flip-01.png"];
yesButton.enabled = NO;
noButton.enabled = NO;
当点击图像(或用户触摸屏幕上的任何其他位置)时,图像会变为“正确”和“错误”按钮,用户可以从中选择是否知道单词(未显示在这些屏幕截图中):
turnImage.image = nil;
yesButton.enabled = YES;
noButton.enabled = YES;
[yesButton setImage:[UIImage imageNamed:@"card-answer-correct-01.png"] forState:UIControlStateNormal];
[noButton setImage:[UIImage imageNamed:@"card-answer-wrong-01.png"] forState:UIControlStateNormal];
以上屏幕截图显示了正常行为。但是,我只在其他所有编译中出现这种行为 - 其余时间,初始屏幕(应该只显示“点击更改”图形)显示所有三个图像,并且“点击更改”图形的拉伸方式与正常情况不同:
除了图形故障之外,程序运行良好:点击任意位置让用户进入下一个屏幕,两个按钮都正确显示。
我在模拟器中和在设备上运行时都得到了这个。在模拟器中,每次运行程序时行为都会发生变化;重置模拟器内容和设置不会影响这一点。在设备上,只要我告诉 Xcode 在设备上运行它,行为就会发生变化。如果我从计算机上拔下设备并启动/关闭应用程序而不更改其代码,则行为不会改变。 (正是这些因素的结合使我认为行为的变化与编译有关。)
我尝试关闭 Xcode 并重新启动它,以及重新启动计算机。这些都没有效果。我正在运行最新版本的 Xcode。
上面的代码 sn-ps 与我的程序中的 完全相同 不同:为了便于阅读,它们已经进行了一些简化。不应该有任何功能更改,但为了确定,这里也是原始代码:
- (void)viewDidLoad{
// I've cut irrelevant stuff that happens before
[yesButton setImage:nil forState:UIControlStateDisabled];
[noButton setImage:nil forState:UIControlStateDisabled];
flipped = NO;
turnImage.image = [UIImage imageNamed:@"card-flip-01.png"];
[self setResponseNavigationButtons:flipped];
}
- (void) setResponseNavigationButtons:(BOOL)status{
if (status){
turnImage.image = nil;
[yesButton setImage:[UIImage imageNamed:@"card-answer-correct-01.png"] forState:UIControlStateNormal];
[noButton setImage:[UIImage imageNamed:@"card-answer-wrong-01.png"] forState:UIControlStateNormal];
} else {
turnImage.image = [UIImage imageNamed:@"card-flip-01.png"];
[yesButton setImage:nil forState:UIControlStateNormal];
[noButton setImage:nil forState:UIControlStateNormal];
}
yesButton.enabled = status;
noButton.enabled = status;
}
当切换到另一个视图时,setResponseNavigationButtons 会调用 YES。
【问题讨论】:
-
谢谢。我略读了一遍,但恐怕我不确定相关性?
标签: ios objective-c xcode uiimage