iOS如何present一个不知道类名的控制器时使它强制转屏

本文介绍了在集成闭源SDK时,如何在呈现一个未知类名的控制器时强制其横屏显示。关键在于满足控制器旋转的两个条件:项目配置和控制器支持方向。通过Runtime在运行时获取并修改控制器的支持方向,实现横屏效果。同时,展示了在控制器消失时恢复屏幕方向的方法。
摘要由CSDN通过智能技术生成

遇到这样的情况:集成公司某部门提供的SDK时,所有的接口都是闭源的, 其中有一个接口返回UIViewController类型的对象,根据产品需求,需要在某个地方present该控制器,并把它强制横屏,当时曾思考如何实现,下面记录我的办法。

我们知道,必须具备两个条件才能让一个被present出来的控制器旋转到指定的屏幕方向:

  1. 项目配置文件中支持的屏幕方向;
  2. present出来的控制器支持的屏幕方向。

两个条件所支持的屏幕方向的交集,便是目标控制器所支持旋转的方向。

(注,令一个被push出来的控制器,在第二个条件上有所差别。)

通过重写UIViewControllersupportedInterfaceOrientations方法来修改目标控制器所支持的屏幕方向,此方法在iPhone上默认的返回值是UIInterfaceOrientationMaskAllButUpsideDown =
(UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), 即除了竖屏向下之外的其他三个方向;

有些人的经验表明,除了上述两个条件之外,还必须重写目标控制器的shouldAutorotate方法,但我在iOS 11, Xcode 9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值