因为屏幕旋转感觉比较麻烦,所以,极少做旋转的情况。这次,尝试做做旋转,总体感觉还行,比单一横屏要多一些事情要处理,但是,写代码的过程中发现:横屏与竖屏并不一定要完全保持所有的元素一样,比如,有些元素并不完全适合竖屏,或者说会带来很大的工作量,就可以简化。本着横屏与竖屏分别处理的原则,就好办多了。毕竟,对于用户来说,可以任意旋转,喜欢哪个旋一下就行,特殊情况必须使用时,那就忍一下小小的区别,应该不是什么大问题。
可是,遇到一个新问题,某一View只能使用横屏,竖屏很难做,或者要调整的东西太多太烦,找找强制横屏的办法。搜了一下,有些好像不起作用,该转的时候转,不该转的时候也转。找到一个基本能用的,基本代码如下:
- (void)interfaceOrientation:(UIInterfaceOrientation)orientation {
//
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
//
SEL selector = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
NSInteger val = orientation;
// 从2开始是因为0 1 两个参数已经被selector和target占用
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
//
return UIInterfaceOrientationMaskLandscapeRight;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
//
return UIInterfaceOrientationLandscapeRight;
}
- (BOOL)shouldAutorotate {
return NO;
}
- (void)viewWillAppear:(BOOL)animated {
//
[self interfaceOrientation:UIInterfaceOrientationLandscapeRight];
}
上述代码基本可以保持横屏状态,可是左右不分,最近一直在旋转,这样死死的保持一个方向,有点不喜欢,起码左右横屏应该能够适应,所以,不太想用,几次尝试改进,没有找到有效的方法。
突然,想到了404,也是不错的想法,为了避免旋转到竖屏出现的混乱尴尬的界面,加盖一个404的View,用户看到这个404,想必会自己再旋转回去吧!
反正就是不让用户在这个View旋转到竖屏,盖住也行吧,效果图如下。自己感觉比死死的保持一个方向要舒服,当然,苹果审核不知道能不能通过,试试,不行再改回来。