ios开发横屏,ios开发锁定横屏
iOS横竖屏要点与横屏返回问题
主要下面三个方法
创新互联建站是一家专注于网站建设、网站设计与策划设计,金水网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:金水等地区。金水做网站价格咨询:028-86922220
1、当前viewController是window的rootViewController.
2、当前viewController是modal模式的. 即, 此viewController是被调用
presentModalViewController 而显示出来的.
对于非modal模式的viewController:如果不是rootViewController,则重写 supportedInterfaceOrientations , preferredInterfaceOrientationForPresentation 以及 shouldAutorotate 方法, 按照当前viewController的需要返回响应的值.如果是rootViewController,则如下重写方法:
这样就绕开了UIKit只调用rootViewController的方法的规则. 把决定权交给了当前正在显示的viewController.
对于modal
模式的viewController. 则按照需要重写supportedInterfaceOrientations,
preferredInterfaceOrientationForPresentation
以及shouldAutorotate 方法即可.
TIPS:
[UIViewController attemptRotationToDeviceOrientation]; 可以重新调用以上的方法。
虽然A界面不支持横屏,但是如果下个B界面支持横屏,B在横屏模式返回的话,A也变横屏了。这里有个简单的设值方法
A界面也重写方法即可
重写
有时候想自己控制横竖屏 ,比如视图播放界面。
setOrientation 在iOS3以后变为私有方法了,不能直接去调用此方法,否则后果就是被打回。
不能直接调用,但是可以间接的去调用,下面的方法就是利用 KVO机制去间接调用.
iOS:强制横屏的坑
前段时间我们播放器强制横屏,项目设置允许竖屏,在手机不锁屏状态下,手机横屏会导致播放器强制横屏的时候会导致横屏失败,下面是强制横屏的解决办法以及我的探究.
首先,在【General】--【Device Orientation】设置仅支持竖屏
接下来在AppDelegate中设置
先设置
接下来有两种办法可以在某个界面设置强制横屏
第一种.先把设备状态设置为竖屏,再强制横屏
第二种.设置强制横屏,再调用
这样就解决手机不锁屏状态下的强制横屏导致的问题,但是为什么产生这些问题呢,请看下我接下来的探究.
接下来说下横屏失败的原因:
用户先向左转了设备的方向才点击横屏,在强制页面向右(也就是设备向左)横屏时,虽然项目是只允许竖屏的,屏幕界面方向也一直是竖屏的,但设备本身的方向(也就是[UIDevice currentDevice].orientation)其实已经是向左,此时其实kvc强制设置的值和本来的值是一样的,这就导致了屏幕界面不转动,所以可以先强制转到另一个方向再转回来,或者使用attemptRotationToDeviceOrientation方法使屏幕界面和设备方向同步。其他方向同理,另外,若用户启用了设备方向锁,用户无论如何旋转设备其设备方向都不变,也就不会有此问题。
下面是我的思路:
在屏幕没有锁定的时候,手机为横屏的时候,播放器横屏时候没有横屏
但是播放器界面并没有变为全屏,根据效果我觉得有可能是宽高问题导致的,因此我先获取手机的屏幕方向
在获取手机的设备方向
发现屏幕方向和设备方向不一致
接下来使屏幕方向和设备方向一致,就可以解决问题
参考文章
iOS 获取屏幕方向
iOS 自定义UIWindow 横屏时适配问题
当自定义一个UIWindow,并在window添加控件,横屏时,window并没有跟随视图旋转。
解决方法1:(苹果推荐这样使用)
1.定义一个UIViewController,并设置为当前Window的rootViewController,将控件添加到自定义的UIViewController上,调用时使用self.mineWindow.mineRootViewController.button...
2.在自定义的UIViewController中添加横屏方法:
- (BOOL)shouldAutorotate {
returnYES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeRight;
}
解决方法2:
对UIWindow进行旋转(UIWindow继承自UIView):
UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];
if (orientation == UIInterfaceOrientationLandscapeLeft) {
CGAffineTransform rotation = CGAffineTransformMakeRotation(3*M_PI/2);
[self setTransform:rotation];
}
if (orientation == UIInterfaceOrientationLandscapeRight) {
CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI/2);
[self setTransform:rotation];
}
如有不当之处请@我。
iOS开发 横竖屏切换问题
在你想支持横竖屏的viewController里面重写两个方法:
1
2
3
4
5
6
7
8
9
10
11
// 支持设备自动旋转
- (BOOL)shouldAutorotate
{
return YES;
}
// 支持横竖屏显示
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
这样在这个viewController中就可以横竖屏切换了。
注意如果你window的rootViewController是一个navigationController,可能会出现以下问题:
你的navigationController只支持竖屏,但是你push到了某个新的controller中,这个controller支持横竖屏,当你在新的controller中切换到横屏后(也有可能在切换到横屏然后pop回来后),这时候程序会闪退,因为你的navigationController不支持横屏。
如果你想解决这个问题,就需要自己写一个UINavigationController的子类,在这个类中重写方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (BOOL)shouldAutorotate
{
return [self.viewControllers.lastObject shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [self.viewControllers.lastObject supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.viewControllers.lastObject preferredInterfaceOrientationForPresentation];
}
然后用这个类去创建实例作为window的rootViewController,这样就可以避免这个问题了。
ios开发iphone6横屏启动图怎么设置
1、iPhone6 Plus共有两种显示模式,分别为标准和放大模式官网 留言只有在“标准模式”下,才支持横屏。所以要确保显示模式在标准模式状态下。
2、在控制中心将“方向锁定”关闭即可让iPhone Plus在手机横放时自动变成横屏显示。
iPhone6 Plus显示模式更改方法
激活苹果6手机时,会让你选择显示模式,如果要更改就看下面的步骤。
1、点击主屏上的“设置”
2、在设置选项列表中找到“显示与亮度”。
3、点击“显示模式”
4、选择“放大”或者“标准”模式
5、切换不同的显示模式之后需要重启苹果手机才能生效
分享文章:ios开发横屏,ios开发锁定横屏
本文路径:http://ybzwz.com/article/dsedejj.html