更改设备方向时如何为uiimageview设置动画
Posted
技术标签:
【中文标题】更改设备方向时如何为uiimageview设置动画【英文标题】:How to animate uiimageview when changing device orientation 【发布时间】:2013-11-19 18:29:24 【问题描述】:我有一个 UIImageView 用于显示我的应用程序的背景图像,因此占据了整个屏幕,根据屏幕尺寸/设备(480 点或 568 点)和方向,图像在 4 个图像中的 1 个之间更改.
我一直在寻找是否有一种方法可以动画显示方向之间的图像切换,因为当前旋转设备时切换非常“苛刻”并简要显示后面的空白区域。
我从 google/here 发现的大部分内容是人们询问如何在 uiimageviews 之间进行动画更改,这不是我想要的,我只是更改代码中单个 uiimageview 中显示的图像,如下面的 sn-p:
- (void)doLayoutForOrientation:(UIInterfaceOrientation)orientation
if (IS_WIDESCREEN && UIInterfaceOrientationIsPortrait(orientation))
self.backgroundImage.image = [UIImage imageNamed:@"iPhone5backgroundPortrait.png"];
_backgroundImage.frame = CGRectMake(0, 0, 320, 568);
if (IS_NOT_WIDESCREEN && UIInterfaceOrientationIsPortrait(orientation))
self.backgroundImage.image = [UIImage imageNamed:@"iPhone4backgroundPortrait.png"];
_backgroundImage.frame = CGRectMake(0, 0, 320, 480);
if (IS_WIDESCREEN && UIInterfaceOrientationIsLandscape(orientation))
self.backgroundImage.image = [UIImage imageNamed:@"iPhone5backgroundLandscape.png"];
_backgroundImage.frame = CGRectMake(0, 0, 568, 320);
else if (IS_NOT_WIDESCREEN && UIInterfaceOrientationIsLandscape(orientation))
self.backgroundImage.image = [UIImage imageNamed:@"iPhone4backgroundLandscape.png"];
_backgroundImage.frame = CGRectMake(0, 0, 480, 320);
我尝试了 [animateImageNamed: duration:] 方法,但是当设备旋转时背景消失了!
谢谢
【问题讨论】:
【参考方案1】:您是否尝试过更改图片:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
?此外,在某些时候预取图像,以便在旋转发生时它们已经在图像缓存中 - 否则第一个可能会有一点延迟。
【讨论】:
以上是关于更改设备方向时如何为uiimageview设置动画的主要内容,如果未能解决你的问题,请参考以下文章