我正在viewDidLoad或viewDidAppear方法中尝试一个简单的UIView动画,但它没有动画。
UIImage *bluredScreenshot = [self.parentViewControllerScreenshot applyBlur];
[UIView transitionWithView:self.screenshotView duration:3.0f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
self.screenshotView.image = bluredScreenshot;
} completion:nil];
简单交叉溶解两个图像。从viewDidLoad或viewDidAppear运行时,图像会更改,但不会设置动画。
但是让我说我按下一个按钮后从一个方法运行动画,它会动画。为什么?看起来很奇怪。
是否可以从viewDidLoad方法中创建它?你会如何解决这个问题?
感谢。
答案 0 :(得分:3)
加载视图时,无法设置动画,因为没有任何动画效果。试试viewdidapear:并且不要使用转换
[UIView animateWithDuration:3.
delay:0
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.screenshotView.image = bluredScreenshot;
}
completion:nil];
答案 1 :(得分:3)
您需要淡入屏幕截图。如果您使用的是两张图像,则需要将一张图像视图放在另一张图像上。 在viewDidAppear中弹出这个:调用[super viewDidAppear:animated];
之后UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.screenshotView.frame];
[self.view addSubview:imageView];
[imageView setAlpha:0.0f];
imageView = blurredScreenshot;
[UIView animateWithDuration:0.3f animations:^{
[imageView setAlpha:1.0f];
} completion:^(BOOL finished){
self.imageView.image = blurredScreenshot;
[imageView removeFromSuperview];
}];
答案 2 :(得分:0)
提醒一下,有时你的问题可能是由于没有打电话引起的:
self.layoutIfNeeded()