tutorialImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Tap to Start.png"]];
tutorialImage.frame = CGRectMake(0, 0, 1024, 768);
[tutorialImage addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(blankMethod)]];
tutorialImage.userInteractionEnabled = YES; // i use this line and the previous line so that the user can't press any buttons behind the image
tutorialImage.alpha = 0;
[self.view addSubview:tutorialImage];
[self.view bringSubviewToFront:tutorialImage];
[UIView animateWithDuration:1.0f animations:^{
tutorialImage.alpha = 1;
} completion:^(BOOL finished) {
[self.view addSubview:tutorialImage]; // this line makes the image come back
}];
我知道你可能无法从这段代码中推断出问题,但是该代码中有什么内容可以让tutorialImage自动从它的superview中删除它吗?
无论如何,在UIView动画期间,图像有点像正常一样消失,然后消失。如果我在那里添加最后一行代码(注释的代码),UIView动画将使图像淡入并在中途闪烁一次。我刚刚添加了这个图片,并且没有代码告诉它将自己从superview中删除。
如果您对修复问题或向您显示更多代码有任何想法,请告诉我。我会经常查看。
另外,我尝试重新启动无效的模拟器,并在h文件UIImageView *tutorialImage;
中声明教程图像。发生问题或任何事情时,控制台不会显示任何错误或任何错误。
编辑:
好的,很奇怪。我将H文件中的声明从UIImageView *tutorialImage;
更改为@property (strong, nonatomic) UIImageView *tutorialImage;
,然后使用_tutorialImage修复了问题。这与强参数有关吗?我将标记谁可以解释正在发生的事情。
答案 0 :(得分:0)
当你有一个弱引用时,一旦没有更多的保留(当没有对象指向具有强指针的对象时),ARC将释放该对象。当你将@property更改为strong时,你现在告诉ARC保持对象,直到父(你的视图控制器)被解除分配。