重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
苹果手机横屏操作步骤:
创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!创新互联具备承接各种类型的成都网站制作、成都网站建设、外贸营销网站建设项目的能力。经过十余年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。
工具/原料:苹果13、ios15.1、设置1.0。
1、首先解锁手机屏幕,沿着屏幕从底部往上滑动。
2、然后点击锁定图标,这时锁定图标变成红色说明竖排方向锁定打开,这时手机就没有办法自动旋转成横屏。
3、最后点击锁定图标,这时锁定图标变成白色说明竖排方向锁定关闭,这时手机就可以自动旋转成横屏。
背景: app内有一个双页的界面,然后某天运营说如果其中一页能支持横屏的话,对接的媒体就能给一整块屏幕,然后需求就这样下来了(双页:一页支持横屏效果,另一页不支持)。
接下来就�是查文档时间了,Duang,一下就查到了有没有,就是下面这两个方法。
//支持设备自动旋转
//支持横竖屏显示
然后发现单纯这两个方法并没有什么用,因为看文档发现这个需要设置在根视图中,具体说明如下:
也就是说到目前为止这两个方法是全局设置的(打断点发现其实是每个视图进行屏幕旋转时都会去根视图里请求这个方法),好吧,接着查,终于让我查到了解决方法。在根视图中还是继续调用这两个方法,但是shouldAutorotate方法稍微改动了一下,意思就是让系统再去当前显示的那个VC中去问应不应该允许屏幕旋转。
接下来就可以在想要支持设备旋转的VC里重写这两个方法了。
到这里其实指定视图的屏幕自动旋转其实就实现了,可是需求提的是在当前这个VC中两个页面一个支持旋转一个不支持旋转,所以便加上了一个BOOL属性值来判断地图页面是否展示,如果展示就支持旋转。
功能实现了,接下来是页面适配。现在屏幕旋转过来完全无法直视啊,视图只展示在了屏幕左面的一小部分,接着去找解决方法。发现在屏幕旋转时系统会抛出来一个通知:
接下来在回调方法里面重新设置一下各个视图的frame就可以了,还有就是应该在各个View的layoutSubviews里面判断一下,为横竖屏分别写一下视图坐标。
最后一个需求,屏幕方向的手动设置(因为一个界面支持横屏,如果在横屏模式下切回另一个只支持竖屏的界面就会出现问题,所以需要在切回之前重新设置下屏幕方向)。
这里吐槽一下,真的一定要吐槽一下,在百度上搜了半天,也可能是我搜索的方式有问题吧,告诉我的都是那个已经被苹果私有化的那个方法,然后果断Stack Overflow,果断秒解决。
OK,到这里需求就完全实现了,另外说一下全局设置的方法,之前最上面的那个算一种,然后也可以在TARGETS设置里面勾选,也可以在AppDelegate中设置。
最后一点就是其实还有一种伪屏幕旋转,其实就是设置View的transform来旋转一定的角度,不过这个方法计算坐标实在是太伤脑筋了,感兴趣的可以自己试试。
1、iPhone6 Plus共有两种显示模式,分别为标准和放大模式官网 留言只有在“标准模式”下,才支持横屏。所以要确保显示模式在标准模式状态下。
2、在控制中心将“方向锁定”关闭即可让iPhone Plus在手机横放时自动变成横屏显示。
iPhone6 Plus显示模式更改方法
激活苹果6手机时,会让你选择显示模式,如果要更改就看下面的步骤。
1、点击主屏上的“设置”
2、在设置选项列表中找到“显示与亮度”。
3、点击“显示模式”
4、选择“放大”或者“标准”模式
5、切换不同的显示模式之后需要重启苹果手机才能生效
在你想支持横竖屏的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,这样就可以避免这个问题了。
iOS13,横屏启动app效果如下图:
查看ui结构图发现,其实他是横屏的
在iOS 13以下系统,正常显示
???不知道是不是 uiwindowScence导致,查看了下api,没发现控制方向的方法
临时解决方案:
将项目不支持多window形式,删除 SceneDelegate
哪位同学有好的解决方案,???? 不吝赐教
你只需要修改info.plist 文件就可以了。找到"Supported interface orientations" 设置item 项为Portrait就可以了。这个设置为全局设置。