在对待orientation上,经常需要在支持转屏和不支持转屏的界面之间进行切换,可能是从navigation controller中 支持转屏的帧切换到不支持转屏的帧,或者从支持转屏的帧切回到不支持转屏的帧,怎样做到流畅的切换,也就是从比如横屏流畅地切到竖屏呢,这个问题目前我还没有解决
目前的做法仍然停留在从横屏切换到只支持坚屏的场景时,需要手动把设备的orientation设置回portrait,比较蛋疼,因为看到微信在从横屏切回到坚屏的时候,是可以做到从portrait方向将controller切回来,在切换效果的时候,旧的横屏controller仍然维持横屏。(朋友圈跳到某分享网页再切回朋友圈的时候)
切换orientation的方法如下:
SEL selector =NSSelectorFromString(@"setOrientation:");
NSInvocation*invocation = [NSInvocationinvocationWithMethodSignature:[UIDeviceinstanceMethodSignatureForSelector:selector]];
[invocationsetSelector:selector];
[invocationsetTarget:[UIDevicecurrentDevice]];
intval = orientation;
[invocationsetArgument:&valatIndex:2];
[invocationinvoke];
[UIViewController attemptRotationToDeviceOrientation];
当然,也有上述方法的objc_msgSend版本:
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)])
{
objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationPortrait );
}
网友评论