教你如何强制显示一个竖屏的不能侧滑返回的SFSafariViewController

简介: 强制让控制器竖屏显示- (BOOL)shouldAutorotate{ return NO;}- (UIInterfaceOrientationMask)supportedInterfaceOrientations{ ret...

强制让控制器竖屏显示

- (BOOL)shouldAutorotate
{
    return NO;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

// 隐藏系统状态样
- (BOOL)prefersStatusBarHidden
{
    return YES;
}

设置不让SFSafariViewController侧滑返回

Swift:

let viewController = SFSafariViewController(URL: url)  
presentViewController(viewController, animated: true) {  
  
     for view in viewController.view.subviews {  
  
          if let recognisers = view.gestureRecognizers {  
  
               for gestureRecogniser in recognisers where gestureRecogniser is UIScreenEdgePanGestureRecognizer {  
  
                    gestureRecogniser.enabled = false  
               }  
          }  
     }  
 }

OC:

 EFKRSafariViewController *safari = [[EFKRSafariViewController alloc] initWithURL:url];
    safari.closeHandler = completion;
    [self presentViewController:safari animated:YES completion:^{
        // 禁止侧滑返回,因为侧滑返回导致强制竖屏会变回横屏
        for (UIView * view in safari.view.subviews) {
            NSArray<__kindof UIGestureRecognizer *> * array = view.gestureRecognizers;
            if (array.count) {
                for (UIScreenEdgePanGestureRecognizer * sepgr in array) {
                    sepgr.enabled = NO;
                }
            }
        }
    }];

如何

创建继承SFSafariViewController的控制器,在里面添加上面的代码就可以啦!


img_064640ffa1cc4fc2006dda331716e6f5.png
继承SFSafariViewController.png

总结

有时候,我们在修改系统的控件属性时,总是希望想找到一个属性方法设置后,就可以达到自己想要的 UI或者逻辑,但其实,系统不可以提供那么多自定义的 API,所以,我们只能通过自己去找到想要的东西,然后去修复它,达到目的。类似的思想,比如hook。代码上也是很其妙。

参考扩展


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

目录
相关文章
|
JSON 自然语言处理 编译器
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
前言包大小是衡量APP性能的一项重要指标,它直接影响用户的下载点击率(包太大不想下)、下载安装成功率(下载慢不用了)、APP卸载率(太占空间先删掉)。包大小的计算逻辑很简单,它是各种类型的文件占用磁盘大小相加。APP瘦身的技术却很复杂,代码文件的复杂度和编译器策略决定了可执行文件的大小,业务功能和工程架构决定了代码文件的复杂度。iOS APP瘦身,需要掌握的技能有XCode构建技术、LLVM编译器
5311 0
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
鸿蒙开发:实现一个标题栏吸顶
本身并不难,处理好滑动位置和手势即可,当然了,里面也有两个注意的点,一个是解决手势冲突的nestedScroll,这个之前的文章中讲过,还有一个就是拦截瀑布流组件的滑动事件,在某些状态下禁止它的滑动。
411 49
鸿蒙开发:实现一个标题栏吸顶
|
Swift iOS开发 开发者
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
3493 13
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
|
存储 Web App开发 Android开发
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
1947 1
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
iOS16系统根据PHAsset判断是否在云上
iOS16系统根据PHAsset判断是否在云上
517 1
|
编解码 Swift iOS开发
iOS 应用之间的跳转(OC&Swift)
iOS 应用之间的跳转(OC&Swift)
2458 0
iOS 应用之间的跳转(OC&Swift)
|
5天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
5945 8
|
3天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
1083 2
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
17天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3267 10

热门文章

最新文章