9512.net
甜梦文库
当前位置:首页 >> 计算机软件及应用 >>

iOS培训-斗鱼直播APP之弹出房间界面


玩转【斗鱼直播 APP】系列之弹出房间界面
作者:小码哥教育

功能说明
区分弹出秀场&普通房间 如果用户是秀场直播,那么弹出秀场房间界面 如果用户是电脑直播,那么弹出普通房间界面 秀场界面弹出 直接以 Model 方式,从底部弹出即可 普通界面弹出 将界面 PUSH 出来 注意: 1> 界面 push 之后,不能再显示 UITabbar(默认依然在下面) 2> 弹出的界面需要因此导航栏,但是首页导航栏依然正常展示 3> 弹出完成后,实现全屏 Pop,手势左滑退出控制器

效果展示

弹出功能实现
监听 UICollectionView 的 Cell 点击 在 BaseAnchorViewController 中实现对应的代码方法监听即可 创建两个房间的控制器(房间不同,需要创建两个控制器)

RoomNormalViewController(普通房间控制器) RoomShowViewController(秀场房间控制器) 在监听 Cell 点击方法中执行弹出逻辑 取出对应的 AnchorModel 对象 根据 anchor 中的 isVertical 属性,判断弹出方式 0 : 电脑直播 1 : 手机直播 根据方式,弹出控制器即可

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

func collectionView(_ collectionView:UICollectionView, didSelectItemAt indexPath:IndexPath){ // 1.取出主播信息 let anchor = baseVM.anchorGroups[indexPath.section].anchors[indexPath.item] // 2.判断是手机直播&电脑直播 anchor.isVertical ==1? presentShowLiveVM(anchor: anchor): pushNormalLiveVM(anchor: anchor) } private func presentShowLiveVM(anchor :AnchorModel){ // 创建控制器 let showVC =RoomShowViewController() // 弹出 present(showVC, animated:true, completion:nil) } private func pushNormalLiveVM(anchor :AnchorModel){ // 1.创建控制器 let normalVC =RoomNormalViewController() // 2.push navigationController?.pushViewController(normalVC, animated:true) }

显示&隐藏 UINavigationBar
显示&隐藏 UINavigationBar 使用下面方法即可 navigationController.setNavigationBarHidden(true, animated: true) true : 隐藏 false : 显示 在 RoomNormalViewController 的系统回调方法中分别执行对应的方法 viewWillAppear:执行隐藏方法 viewWillDisappear:执行显示方法 注意: 这样做会产生一个问题,就是原来系统的左边缘的滑动退出控制器手势无效了 一旦我们隐藏了导航栏,那么该手势就会自动失效 如果希望继续显示,则需要按照下面的步骤 1> navigationController?.interactivePopGestureRecognizer?.delegate = self 2> navigationController?.interactivePopGestureRecognizer?.isEnabled = true 代码如下:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

classRoomNormalViewController:UIViewController,UIGestureRecognize rDelegate{ override func viewDidLoad(){ super.viewDidLoad() view.backgroundColor =UIColor.purple // 保留 Pop 手势 navigationController?.interactivePopGestureRecognizer?.delegate=self navigationController?.interactivePopGestureRecognizer?.isEnabled =true

11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.

}

override func viewWillAppear(_ animated:Bool){ super.viewWillAppear(animated) navigationController?.setNavigationBarHidden(true, animated:true) } override func viewWillDisappear(_ animated:Bool){ super.viewWillDisappear(animated) navigationController?.setNavigationBarHidden(false, animated:true) } }

隐藏 UITabbar
在 push 时隐藏 UITabbar 非常简答 因为系统已经提供了一个控制器的属性 设置控制器的 hidesBottomBarWhenPushed 为 true 即可 注意:所有的 push 控制器其实都需要因此,那么怎么办呢? 方案一:抽取统一的父类 方案二:截取 push 过程,在 push 的那一刻,设置控制器的属性 该位置采取方案二:更为简单 如何截取? 自定义 UINavigationController 重写 pushViewController(_ viewController: UIViewController, animated: Bool) 方法 将之前的 UINavigationController 改成自定义的

代码如下:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

classCustomNavigationController:UINavigationController{ override func viewDidLoad(){ super.viewDidLoad() } override func pushViewController(_ viewController:UIViewController, animated:Bool){ viewController.hidesBottomBarWhenPushed =true super.pushViewController(viewController, animated: animated) } }

添加全屏 Pop 手势
思路分析:添加全屏 Pop 手势一直以来都有两种实现思路
方式一:自己在 Push 出来的 View 中添加 UIPanGestureRecognizer 手势 添加手势,监听手势滑动 随着手势滑动,逐渐退出控制器的 View 优点:最容易想到,使用自定义专场即可实现 缺点:较为麻烦 方式二:利用运行时机制,获取系统的 Pop 手势 target&action 获取系统的手势监听 View 获取系统的手势 target&action 创建自己的手势,添加事件监听时,使用上步中的 target&action 将手势,添加到系统手势监听的 View 中 优点:实现非常简单 缺点:需要用到运行时机制,且不容易想到

实现方案:方案二(简单)
该位置我们采用第二种实现方案,也是我个人常用的实现方案 首先,我们已经知道系统是有一个左滑手势 该左滑手势只能在左边缘滑动才会生效 但是该手势的 View&target&action 系统已经创建好了 我们可以自己创建一个手势,但是利用系统的 View&target&action 问题? 1> 如果获取系统手势的 View? 比如简单,因为可以直接获取 interactivePopGestureRecognizer 手势 interactivePopGestureRecognizer.view 即可获得 2> 如果获取 target&action 该方式较为麻烦,需要使用 KVC 通过某一些 Key 来获取可接 3> 通过哪些 key 呢?

需要用运行时,遍历所有的属性找到

?

代码分析: classCustomNavigationController:UINavigationController{ override func viewDidLoad(){ super.viewDidLoad() // 1.取出手势&view guard let gesture = interactivePopGestureRecognizer else{return} gesture.isEnabled =false let gestureView = gesture.view // 2.获取所有的 target let target =(gesture.value(forKey:"_targets")as?[NSObject])?.first guard let transition = target?.value(forKey:"_target")else{return} let action =Selector(("handleNavigationTransition:")) // 3.创建新的手势 let popGes =UIPanGestureRecognizer() popGes.maximumNumberOfTouches =1 gestureView?.addGestureRecognizer(popGes) popGes.addTarget(transition, action: action) } override func pushViewController(_ viewController:UIViewController, animated:Bool){

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

24. 25. 26. 27.

viewController.hidesBottomBarWhenPushed =true super.pushViewController(viewController, animated: animated) } }



更多相关文章:
iOS培训-斗鱼直播APP之弹出房间界面.doc
iOS培训-斗鱼直播APP之弹出房间界面_计算机软件及应用_IT/计算机_专业资
iOS培训-斗鱼直播APP之请求展示推荐数据.doc
iOS培训-斗鱼直播APP之请求展示推荐数据_计算机软件及应用_IT/计算机_专
iOS培训-斗鱼直播APP之项目基本设置.doc
iOS培训-斗鱼直播APP之项目基本设置 - 本文档的主要内容是小码哥教育iOS
iOS培训-斗鱼直播APP之娱乐基本展示_图文.doc
iOS培训-斗鱼直播APP之娱乐基本展示_互联网_IT/计算机_专业资料。本文档
iOS培训-斗鱼直播APP之直播总体概览.doc
iOS培训-斗鱼直播APP之直播总体概览 - 本文档的主要内容是小码哥教育iOS
iOS培训-斗鱼直播APP之加载数据动画.doc
iOS培训-斗鱼直播APP之加载数据动画_计算机软件及应用_IT/计算机_专业资
iOS培训-斗鱼直播APP之游戏推荐展示.doc
iOS培训-斗鱼直播APP之游戏推荐展示_计算机软件及应用_IT/计算机_专业资
iOS培训-斗鱼直播APP之利用青花瓷抓取数据.doc
iOS培训-斗鱼直播APP之利用青花瓷抓取数据 - 本文档的主要内容是小码哥教育
iOS培训-iOS直播APP之原理篇.doc
房间、进入房间、退出房间、关闭房间、切换房间、房间...观看直播 聊天信息、滚屏弹幕、礼物显示、加载界面等...iOS培训-斗鱼直播APP之获... 暂无评价 9页 免费 ...
iOS培训-斗鱼直播APP之Swift3.0适配.doc
iOS培训-斗鱼直播APP之Swift3.0适配 - 本文档的主要内容是小码哥教
虎牙直播斗鱼TV、战旗TV游戏直播App竞品分析报告_图文.pdf
虎牙直播找回密码界面: 进入找回密码界面的同时自动弹出键盘;由于虎牙只能通过...iOS培训-斗鱼直播APP之首... 暂无评价 9页 免费 iOS培训-斗鱼直播APP...
斗鱼主播高级攻略.doc
斗鱼主播攻略 一个优秀的主播,要具备以下几个几个...可以去培训机构参加一些 演讲技巧方面的培训,一个...5、要学会包装自己 主播的一个房间的布置, 也就是...
斗鱼主播攻略.doc
斗鱼主播速成攻略 一、注册并申请 1、主页右上角注册斗鱼账号,然后登录,点击头像进入个 人中心。 2、申请直播间。(需按要求详细填写) ①房间标题随意编写,可随时...
99直播软件哪家好 99直播软件软如何_图文.doc
对话纪录永久保存 允许的较高在线人数(所有房间实际...直播、斗鱼直播、战旗直播(以上三种直播都支持 PC ...QQ 安卓 App IOS 苹果 App 99 直播软件具体详情...
iOS培训-斗鱼直播APP之采集视频_图文.doc
iOS培训-斗鱼直播APP之采集视频_计算机软件及应用_IT/计算机_专业资料。
哪个直播软件好?直播软件哪个好?.doc
每个房间拥有一个独立后台,管理自己房间的会员客户,...直播视频源 提供虎牙 YY 直播、斗鱼直播、战旗直播(...QQ 安卓 App IOS 苹果 App 通过以上哪个直播软件好...
99财经直播软件哪家好 99财经直播软件软如何_图文.doc
对话纪录永久保存 允许的较高在线人数(所有房间实际...直播、斗鱼直播、战旗直播(以上三种直播都支持 PC ...QQ 安卓 App IOS 苹果 App 99 财经直播软件具体...
股票直播间软件怎样 股票直播间软件软如何_图文.doc
对话纪录永久保存 允许的较高在线人数(所有房间实际...直播、斗鱼直播、战旗直播(以上三种直播都支持 PC ...QQ 安卓 App IOS 苹果 App 股票直播间软件具体详情...
什么直播系统好 在线直播系统哪个好_图文.doc
每个房间拥有一个独立后台,管理自己房间的会员客户,...直播、斗鱼直播、战旗直播(以上三种直播都支持 PC ...App IOS 苹果 App 以上便是 99 财经直播系统的...
金融直播软件哪家好,值得推荐的金融直播软件系统.doc
控所有的子房间的发言信息,在监控房间里可以看到来自...直播、斗鱼直播、战旗直播(以上三种直播都支持 PC ...QQ 安卓 App IOS 苹果 App 金融直播软件具体详情...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图