我有这段代码可以在 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
等的方法。
两个问题:
- 我可以通过简单地将这段代码(可能稍作修改)移动到不同的方法(可能会影响效果的时间)来避免这种平铺效果吗?
- 如果我必须去看更精细的动画,我应该使用哪种方法?任何指向示例的指针?
谢谢。我读了很多书,但似乎有很多方法可以让它几乎正确,如果有人对最佳实践有评论,我会很感激。