ios 屏幕旋转,横屏竖屏

Advertisement

最近做了一点关于屏幕旋转的东西,第一次做,搞的焦头烂额,所幸在同事的帮助下完成了,现在记录一下,便于以后查看。

1.首先需要在General里,Deployment info 里根据自己的需求设置Device Orientation。

Portrait代表竖屏Landscape代表横屏

2.如果是想要自动根据手机的方向横竖屏的话设置下面两个方法

- (BOOL)shouldAutorotate
{
return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}

3如果想手动控制横竖屏,就用下面的方法

添加按钮的方法

[UIDevice currentDevice] orientation]可以取到当前屏幕的方向

if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait)
{

[self setfullScreen];

}

if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft)
{

[self setsmallScreen];

}

//横屏

- (void)setfullScreen
{
[[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight] forKey:@"orientation"];
}

//竖屏

- (void)setsmallScreen
{
[[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationPortrait] forKey:@"orientation"];
}

然后旋转后的frame需要根据自己需要设置

还有一种横屏方法为强制横屏,在view上添加一个window,然后把window强制旋转,但是这样做键盘还是竖屏,可以根据需要选择

下面直接上方法

- (void)setLandScapeViewWithOrientation:(UIDeviceOrientation)orientnation
{
if (UIDeviceOrientationIsLandscape(orientnation)) {
if (_landScapeWindow == nil) {
CGRect screenFrame = [UIScreen mainScreen].bounds;
_landScapeWindow = [[UIWindow alloc] initWithFrame:CGRectMake(screenFrame.size.width/2 - screenFrame.size.height/2, screenFrame.size.height/2 - screenFrame.size.width/2, screenFrame.size.height, screenFrame.size.width)];
_landScapeWindow.windowLevel = UIWindowLevelStatusBar + 1;
_landScapeWindow.center = CGPointMake(screenFrame.size.width/2, screenFrame.size.height/2);
CGFloat angle = M_PI_2;
if (orientnation == UIDeviceOrientationLandscapeRight) {
angle = M_PI_2 + M_PI;
}
_landScapeWindow.transform = CGAffineTransformIdentity;
_landScapeWindow.transform = CGAffineTransformMakeRotation(angle);
_landScapeWindow.hidden = NO;

} else if (UIDeviceOrientationIsPortrait(orientnation)) {
_landScapeWindow.hidden = YES;
}
}
}

Similar Posts:

  • iOS屏幕旋转与大小调整

     屏幕旋转学习笔记 加速计是整个IOS屏幕旋转的基础,依赖加速计,设备才可以判断出当前的设备方向,IOS系统共定义了以下七种设备方向: typedef NS_ENUM(NSInteger, UIDeviceOrientation) { UIDeviceOrientationUnknown, UIDeviceOrientationPortrait, // Device oriented vertically, home button on the bottom UIDeviceOrientat

  • Android学习笔记(三六):横屏竖屏的切换

    1.准备环境 对模拟器,只要"Ctrl+F12",就可以可以实现竖屏(portrait)和横屏(landscape)的切换. 2.UI的屏幕切换实现 下面一个简单的例子,如图. 我们需要写两个Android XML文件,假定文件为chapter_19_test1.xml,放在常规目录位置layout/内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:

  • 布局,全屏,横屏竖屏

    五大布局 FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局). 1.FrameLayout 所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西. <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android=&

  • 【Android笔记】入门篇02:全屏设置和禁止横屏竖屏切换

    [参考]:Android禁止横屏竖屏切换 <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.qulordy.game.chesswarrior" android:versionCode="1" andr

  • cocos2d-x 2.14 在IOS 6.1 中竖屏设置

    cocos2d-x 2.14 在IOS 6.1 中竖屏设置方法如下: 看图找到 RootViewController.mm 文件 之后打开RootViewController.mm 文件,找到如下代码,并按照我写的注释修改就行了 // Override to allow orientations other than the default portrait orientation. // This method is deprecated on ios6 - (BOOL)shouldAutor

  • HTML5中判断横屏竖屏

    一:CSS判断横屏竖屏 写在同一个CSS中 @media screen and (orientation: portrait) { /*竖屏 css*/ } @media screen and (orientation: landscape) { /*横屏 css*/ } 分开写在2个CSS中 竖屏 <link rel="stylesheet" media="all and (orientation:portrait)" href="portrait

  • iOS屏幕旋转之为横屏视频播放增加竖屏模式

    在App Store上的大部分视频播放App中,都实现了竖屏小屏播放以显示更多相关信息,横屏切换到全屏播放,这样的交互显得优雅而大方.最近项目里有个这样的需求,为全屏视频播放加上竖屏模式.下面,让我们一起来实现这个需求. iOS中的方向 iOS设备中有两种方向,一种是设备方向,一种是屏幕视图方向.我们可以直接调用 [UIDevice currentDevice] setOrientation:UIInterfaceOrientationPartrait]; 强制更改设备方向,但该方法已经在iOS

  • Android屏幕横屏竖屏切换的方法

    package lxd.copenhagen.clickListern; import android.app.Activity; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widge

  • iOS 屏幕旋转问题

    self.interfaceOrientation或[[UIApplication sharedApplication] statusBarOrientation] if (self.interfaceOrientation==UIDeviceOrientationLandscapeRight) { XXOO } 不旋转,保持竖屏 //iOS 5 - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toI

  • symbian s60 3rd 横屏竖屏切换

    原文:http://blog.sina.com.cn/s/blog_491e04500100dg85.html 设备, 软件 版本: S60 3rd Edition S60 3rd Edition, FP1 S60 3rd Edition, FP2 详细描述: 缺省情况下,程序是根据手机屏幕的当前方向开始启动的.如果要强制程序以横屏或竖屏的模式启动,那我们在CAknAppUi::ConstructL()方法中调用BaseConstructL()时就要传递相应的flag值: 定义如下: EAknE

Tags: