如何在更改设备方向时为uiimageview设置动画

时间:2013-11-19 18:29:24

标签: ios objective-c uiimageview orientation

我有一个UIImageView用于显示我的应用程序的背景图像,因此占据整个屏幕,图像在4个图像中的1个之间变化,具体取决于屏幕尺寸/设备(480点或568点)&方向。

我一直在寻找是否有办法在方向之间切换图像的动画,因为当设备旋转时,当前切换是非常“刺耳的”&简要展示了背后的白色空间。

我在谷歌/这里发现的大部分内容都是人们询问如何动画uiimageviews之间的变化,这不是我想要的,我只是在代码中更改单个uiimageview中显示的图像,如下所示:

- (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 个答案:

答案 0 :(得分:0)

您是否尝试更改图片:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

?此外,在某些时候预取图像,以便在旋转发生时它们已经在图像缓存中 - 否则第一个可能会有一些延迟。