更改设备方向时如何为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设置动画的主要内容,如果未能解决你的问题,请参考以下文章

当它们移动以填充其他淡出的 div 留下的空白空间时如何为 div 设置动画

弹出键盘时如何为 UITableView 设置动画?

如何为较小的设备更改 UIImageView 的高度?

首次打开页面时如何为 div 的大小调整设置动画 [重复]

如何为 UIImageView 中的图像变化设置动画?

连接多个设备时如何为特定设备运行 vts