当用户旋转设备时,我试图从一个 UIView 转换到另一个 UIView。这本身并不困难。但是,由于我在旋转后显示完全不同的内容,因此 UIKit 提供的默认动画(旋转当前显示的视图)在概念上是不合适的。
简单地禁用动画并突然交换视图是可以忍受的,但远远低于我在应用程序的其余部分中构建的完善程度。我想做的是:
当调用 shouldAutorotateToInterfaceOrientation: 时,我想获取旋转之前的用户视图的不透明视图快照(如果愿意的话)。然后,在旋转完成并且系统应用了视图变换等之后,我可以显示我保存的快照视图,并将我选择的动画转换到新视图。完成后,我可以发布快照并继续。
有没有一种方法可以做到这一点并且不昂贵?
我能想到的唯一的其他选择是在除默认方向之外的所有方向上返回 NO,然后通过应用我自己的动画和变换来做出反应。然而,我更喜欢使用系统来执行此操作,因为我觉得自己执行此操作可能会导致手动旋转视图中的“未定义”键盘行为等。
想法?
- (UIImage *)captureView:(UIView *)view {
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);
[view.layer renderInContext:ctx];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
在这里找到这个:
http://discussions.apple.com/thread.jspa?messageID=8358740 http://discussions.apple.com/thread.jspa?messageID=8358740
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)