强制横屏的一种实现 ios
2016-09-01 17:46
531 查看
// 强制横屏的一种实现
// 使用方法:
// 在vc的init方法中调用initLogic
// 在vc关闭之前调用cleanRotateTrace方法
-(void)initLogic
{
isPortraitIn_ = NO;
isSettingStatusBar_ = NO;
}
-(BOOL)shouldAutorotate
{
if (isSettingStatusBar_)
{
return NO;
}
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return ((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientationduration:(NSTimeInterval)duration
{
if (isPortraitIn_)
{
self.view.transform = CGAffineTransformIdentity;
isPortraitIn_ = NO;
}
}
- (void)cleanRotationTrace
{
if (isPortraitIn_)
{
self.view.transform = CGAffineTransformIdentity;
isPortraitIn_ = NO;
UIInterfaceOrientation orientation = [UIApplicationsharedApplication].statusBarOrientation;
if (orientation == UIInterfaceOrientationLandscapeRight)
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
isSettingStatusBar_ = NO;
}
else
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortraitUpsideDown animated:NO];
isSettingStatusBar_ = NO;
}
[self.view setFrame:CGRectMake(0, 0, self.view.frame.size.height + 20,self.view.frame.size.width - 20)];
}
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIInterfaceOrientation orientation = [UIApplicationsharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsPortrait(orientation))
{
isPortraitIn_ = YES;
self.view.transform = CGAffineTransformMakeRotation(M_PI_2);
if (orientation == UIInterfaceOrientationPortrait)
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
isSettingStatusBar_ = NO;
}
else
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
isSettingStatusBar_ = NO;
}
[self.view setFrame:CGRectMake(0, -20, self.view.frame.size.height - 20,self.view.frame.size.width + 20)];
}
}
// 使用方法:
// 在vc的init方法中调用initLogic
// 在vc关闭之前调用cleanRotateTrace方法
-(void)initLogic
{
isPortraitIn_ = NO;
isSettingStatusBar_ = NO;
}
-(BOOL)shouldAutorotate
{
if (isSettingStatusBar_)
{
return NO;
}
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return ((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientationduration:(NSTimeInterval)duration
{
if (isPortraitIn_)
{
self.view.transform = CGAffineTransformIdentity;
isPortraitIn_ = NO;
}
}
- (void)cleanRotationTrace
{
if (isPortraitIn_)
{
self.view.transform = CGAffineTransformIdentity;
isPortraitIn_ = NO;
UIInterfaceOrientation orientation = [UIApplicationsharedApplication].statusBarOrientation;
if (orientation == UIInterfaceOrientationLandscapeRight)
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
isSettingStatusBar_ = NO;
}
else
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortraitUpsideDown animated:NO];
isSettingStatusBar_ = NO;
}
[self.view setFrame:CGRectMake(0, 0, self.view.frame.size.height + 20,self.view.frame.size.width - 20)];
}
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
UIInterfaceOrientation orientation = [UIApplicationsharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsPortrait(orientation))
{
isPortraitIn_ = YES;
self.view.transform = CGAffineTransformMakeRotation(M_PI_2);
if (orientation == UIInterfaceOrientationPortrait)
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
isSettingStatusBar_ = NO;
}
else
{
isSettingStatusBar_ = YES;
[[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
isSettingStatusBar_ = NO;
}
[self.view setFrame:CGRectMake(0, -20, self.view.frame.size.height - 20,self.view.frame.size.width + 20)];
}
}
相关文章推荐
- 强制横屏的一种实现 ios
- iOS 某一个界面实现强制横屏
- iOS实现单个页面强制横屏
- ios开发 强制横屏的实现
- iOS 7 下 UIAlertView 强制横屏实现
- iOS不勾选设置,实现某个界面强制横屏
- iOS 某一个界面实现强制横屏
- iOS如何实现强制转屏、强制横屏和强制竖屏的实例代码
- iOS强制切换横屏、竖屏
- 在IOS应用中从竖屏模式强制转换为横屏模式
- iOS模态窗口的实现。(横屏问题)
- iOS 6.0 强制横屏
- (转)在IOS应用中从竖屏模式强制转换为横屏模式
- Xcode ,Cocos2d-x,强制横屏,Bundle Identifier ,iOS 打包成.ipa,修改项目名称,同名图片替换总是显示旧图片
- 在iOS应用中从竖屏模式强制转换为横屏模式
- iOS上一种图书翻页效果的实现(Lea…
- ios 强制某个界面旋转成横屏
- Leaves -- iOS上一种图书翻页效果的实现
- ios sdk6 中强制横屏显示界面的方法
- 在IOS应用中从竖屏模式强制转换为横屏模式