1

我有这段代码可以在 iPad 上旋转期间更改背景图像:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{    
if (![SysConfig isPhone]) {   // Only need to worry about this for the iPad 
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    if ([SysConfig isRetina]) {          
        if (UIInterfaceOrientationIsLandscape(fromInterfaceOrientation)) {
            [[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Default-Portrait@2x~ipad.png"]]];
        } else {
            [[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Default-Landscape@2x~ipad.png"]]];
        }
        // retina display above, regular below
    } else {
    \\ Same thing but for low res display            
        }
    }
}
}

它工作正常,除了在短时间内您看到原始背景图像平铺在新旋转的设备上,然后它旋转并转移到适合新方向的新图像,所以它不会平铺。我想摆脱平铺的视觉效果。

我从阅读 SO 中收集到,我可能会通过某种动画隐藏平铺(交叉淡入淡出两个图像,或者缩小旧图像并在旋转发生时将其平滑地扩展为新图像)。但我也不确定我是否在正确的地方这样做,因为我已经看到了涉及viewDidAppear viewWillAppear willAnimateRotationToInterfaceOrientation等的方法。

两个问题:

  1. 我可以通过简单地将这段代码(可能稍作修改)移动到不同的方法(可能会影响效果的时间)来避免这种平铺效果吗?
  2. 如果我必须去看更精细的动画,我应该使用哪种方法?任何指向示例的指针?

谢谢。我读了很多书,但似乎有很多方法可以让它几乎正确,如果有人对最佳实践有评论,我会很感激。

4

1 回答 1

2

解决方案:除了交换纵向和横向的实例外,我将相同的代码放入willAnimateRotationToInterfaceOrientation并修复了平铺问题。

于 2012-08-20T17:49:28.480 回答