我有一个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:]方法但是当旋转设备时背景消失了!
感谢
答案 0 :(得分:0)
您是否尝试更改图片:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
?此外,在某些时候预取图像,以便在旋转发生时它们已经在图像缓存中 - 否则第一个可能会有一些延迟。