首页
学习
活动
专区
圈层
工具
发布

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架的视频流App的构建

下载好材料打开 TravelVlogs.xcodeproj 并转到 VideoFeedView.swift。 注意:视频可能无法在模拟器中播放。 在真实设备上运行该应用程序将缓解该问题。...要在 Swift 中使用 KVO——比在 Objective-C 中好得多——你需要保留对观察者的引用。...PiP 视频无法在环境模式下播放。 打开 AppMain.swift 并添加此方法: private func setVideoPlaybackCategory() { try?...如果你想使用画中画,你需要使用 AVPlayerViewController,它属于 UIKit。 好处是你知道如何在 SwiftUI 和 UIKit 之间建立桥梁。...2) 您定义了一个符合 UIViewControllerRepresentable 的结构,以便能够在 SwiftUI 中使用 AVPlayerViewController。

9.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS_解决:当点击到TableViewCell上的Button时,就无法滑动TableView的问题

    之前面试遇到了一个问题: 长按到UIButton时,UITableView滑动不了,有遇到过么?(怎么解决?) 估计是当前面试官描述的不够清楚,然后我没有印象,也没理解他说的是什么。...但其实肯定是遇到过的,只是没有引起我的重视。 以下是解决办法: 1、无法滑动的问题 当点击到TableViewCell上的Button时,就无法滑动TableView。...解决的办法是:自定义一个TableView继承自UITableView,并重写以下方法: override func touchesShouldCancel(in view: UIView) -> Bool...{ return true } 2、highlight效果延迟问题: 当UIButton被添加在UITableViewCell上时,它的高亮状态切换会延时。...解决的办法是:将tableView的delaysContentTouches设置为false tableView.delaysContentTouches = false

    99420

    iOS开发常用之网络

    该项目通过三种形式展示页面之间的切换,比如导航栏上的多个选项卡切换,页面左右两端箭头指示切换,以及使用分段控件。...LxTabBarController - 改变了原生tabbar切换标签时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予关闭),swift版本。...MDCSwipeToChoose - MDCSwipeToChoose可简单地添加滑动手势来调用UIView,并使用该行为提供了一个组件以创建类似Tinder应用的喜欢或者不喜欢界面的轻扫。...QQBtn - 仿QQ未读消息弹性按钮动画,达到和手机QQ未读信息一样的动画效果,效果基本实现。 GMStepper - swift带动画效果,支持手势滑动操作的步进标签。...STPopup - 提供了一个可在iPhone和iPad上使用的具有UINavigationController弹出效果的STPopupController类,并能在Storyboard上很好的工。

    30.8K10

    iOS新的视频开发框架AVPlayerViewContoller与画中画技术

    iOS9系统后,iPad Air正式开始支持多任务与画中画的分屏功能,所谓画中画,即是用户可以将当前播放的视频缩小放在屏幕上同时进行其他应用程序的使用。这个革命性的功能将极大的方便用户的使用。...于此同时,在iOS9中,MPMoviePlayerController与MPMoviePlayerViewController类也被完全易用,开发者使用AVPlayerViewController可以十分方便的实现视频播放的功能并在一些型号的...二、AVPlayerViewController的使用与其中方法属性解析         使用AVPlayerViewController首先需要引入两个框架,如下: #import 的控件可以添加在其上 @property (nonatomic, readonly, nullable) UIView *contentOverlayView; //画中画代理 iOS9后可用...两指的捏合操作可以将缩小的视频播放窗口进行任意尺寸的放大,如果将视频窗口拖进屏幕的边界,视频窗口会被吸进边界,用户可以通过拖拽手势将其拉出,如下图: ?

    2.5K40

    AVKit框架详细解析(二) —— 基于视频播放器的画中画实现(一)

    接着看下写作环境: Swift 5, iOS 14, Xcode 12 下面就是正文了。 如今,用户希望能够使用Picture in Picture (PiP) - 画中画播放视频。...你已经看到,如果你使用标准的 AVPlayerViewController,画中画几乎是自动的。 如果您的应用程序具有自定义播放控制器,则您需要做一些额外的工作来支持画中画。 接下来您将了解这一点。...要使用它而不是默认的 AVPlayerViewController,您需要更改点击视频调用的代码行。...这对于默认的 AVPlayerViewController 和自定义播放器控制器都是如此。 要摆脱困境,您需要添加播放器控制器恢复功能。...要使用 AVPlayerViewController 而不是自定义播放器控制器来测试画中画,请修改 CategoryListViewController 的 collectionView(_:didSelectItemAt

    3.9K10

    Ios常用第三方框架(二)

    图表 PNChart - 国内开源作者,动态的图表。 swift-linechart - 功能完整、实用的折线图组件。使用方便,参数配置简单。是不可多得的优质组件--swift。...该项目通过三种形式展示页面之间的切换,比如导航栏上的多个tab切换、页面左右两端箭头指示切换,以及使用分段控件。...LxTabBarController - 改变了原生tabbar切换tab时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予以关闭),swift版本。...WXTabBarController - 在系统 UITabBarController 的基础上完美实现了安卓版微信 TabBar 的滑动切换功能,单手操作 iPhone 6 Plus 切换 TabBar...,可以使用在多种不同形态的APP下,还可以将其做为多页或多图的滑动介绍。

    11.2K60

    iOS - 实现UINavigation全屏滑动返回(二)

    回顾 在 iOS - 实现UINavigation全屏滑�动返回(一) 中我们实现了滑动返回的功能,但不是全屏滑动返回,得在左侧边缘轻扫才能滑动返回~UINavigationController自带的只能在边缘轻扫才能滑动返回...,这用户体验是不好的,接下来实现全屏滑动返回!...先来看下系统手势有没有提供属性或方法供我们使用 NSLog(@"%@", self.interactivePopGestureRecognizer); 打印信息: /* 滑动,接着点击Button 如图所示,在最后里回到根控制器界面后我再一次向右滑动,接着点击Button,它没有将FirstVC弹出,这就是传说中的bug,那我们现在在做的,就是在根控制器不让滑动返回生效...; 所以我们的target就可以通过这种方式获得,不用KVC的方式 哦,最后别忘了禁用系统手势 // 禁止系统的手势 self.interactivePopGestureRecognizer.enabled

    1.5K40

    iPhone 16 或将配备可拆卸电池 | Swift 周报 issue 57

    电池容量确保设备可重复使用,而强制要求减少废弃部件,这样人们就不会在手机无法充电时直接更换手机。...SwiftUI 中 List 的 liststyle 样式及使用详解添加、移动、删除、自定义滑动摘要: 文章详细介绍了在 SwiftUI 中使用 List 组件的各种功能和样式定制方法。...Swift 解决手势冲突的方案摘要: 这篇文章探讨了在 Swift 开发中处理手势冲突的多种方法。首先介绍了手势冲突的概念,即多个手势识别器竞争同一事件可能导致的问题。...随后详细讨论了以下解决方案:使用手势识别器代理来控制哪些手势可以同时识别。...使用 require(toFail:) 方法确保一个手势在另一个失败后再尝试识别。创建自定义手势识别器以实现复杂的手势逻辑。

    99000

    抓住iOS的未来 - 30天学习编写30个Swift小程序

    无意中听说了有一个叫Sam Lu在Twitter上发起了一个100天做40个Swift小程序的活动,再加上国内看到了Allen_朝辉写的Swift学习的文章,心里暗自下了一个决定:30天写30个Swift...(tmpItems) { (error) in } - 如果调试过程中,发现模拟器上重新了之前的spotlight缓存无法清除的情况,请更换新的模拟器,或者重置模拟器。...注意,这种方式要排除上下滑动Cell的情况,不要错误触发。...image.png 写完这些项目,感觉上一方面是提高了使用Swift语言的熟练度,另一方面更是复习了一遍iOS开发的知识点,因为写到后来我已经基本感觉不出来跟用OC开发有什么思路上的差异。...这也回答了别人问过我的问题,“如果我现在学iOS开发,是应该学OC还是Swift”: 我觉得从iOS SDK的熟悉角度来说,没有本质区别,如果熟悉OC下对应语法去使用Swift写没有太大区别。

    3K20

    iOS视频播放的基本方法

    View添加到视图控制器的View上才能显示视频,使用步骤如下: 第一步:引用MediaPlayer框架,声明视图控制器属性PlayerController #import 的,必须创建一个播放层AVPlayerLayer并将其添加到其他的视图Layer上才能显示。 1....其相比AVPlayer的使用更加方便,但是原理上还是AVPlayerViewController包含了一个AVPlayer对象。...使用这种方式播放的优点在于可以指定播放界面的原始尺寸大小,但是值得注意的是AVPlayerViewController必须被当前视图控制器所持有,以防止被当做局部变量被释放。...不能作为局部变量被释放,否则无法播放成功 //解决1.AVPlayerViewController作为属性 //解决2:使用addChildViewController,AVPlayerViewController

    5.2K20

    React-native踩坑小记

    listview没有弹性边界,无法实现线上的下拉刷新效果; swiper插件和tab-view插件手势冲突; 如何填平这几个坑: 1....listview没有弹性边界,无法实现线上的下拉刷新效果: 因为android本身就没有滚动到边界还能继续滚动的策略。。这里使用一些java补丁代码(列表插件所提供),来实现弹性边界-。- 3....swiper插件和tab-view插件手势冲突 因为最外层tab和swiper,都用到了滑动切换的特性,然而这个需求在android上边实现。。会导致直接滑动外层tab,而不是swiper。。。...于是我们开始研究android的触摸事件到底是怎么个执行法。 大致是一个先捕获,再冒泡的过程: 最外层组件触发回调,询问是否捕获事件,并阻止事件继续传递。....- 然而当我下载了我司客户端后发现有时也会存在这个问题我就坦然了,233333333) 一个简单的阻止外层scrollview滑动的栗子 所使用插件的链接: 当下最好用的列表插件,可高度自定义的上拉刷新和下拉加载样式

    4.9K80

    一个独立开发者总结的App 迭代设计思路

    我在2014年为iOS 7设计了Overcast1.0,这是一个具有时代标记的产品:使用了超细的字体和线,边缘锋利,全屏白色背景和半透明模糊的底栏,大部分基础功能需要隐藏手势操作。...之前很难找到隐藏在手势背后的功能,例如,单元表格首先需要点击“edit”按钮,才能进行滑动操作。...卡片式的播放页面 我修改了播放页和App其余页面的之间的结构关系,使用了新的卡片式的结构,用从底部向上滑动代替从右边推入: 当下最热门的音乐以及播客App已经完全接受了从底部上滑出播放页面的方式(包括iOS...(之前的手表应用还只是在watchOS 1上运行。) 并且我将一些代码改成了Swift!...(这也是这个APP的大小从7MB变成30MB的原因:由于Swift还很年轻,所有的Swift APP仍然是在使用Swift库的自定义副本。)

    1.8K90

    Android分享:Android侧滑原来可以这么优雅

    前言 侧滑手势在Android App应用得非常广泛,常见的使用场景包括:滑动抽屉、侧滑删除、侧滑返回、下拉刷新以及侧滑封面等。...狭义侧滑:从屏幕的某侧的边缘开始向着远离该边缘的方向滑动 广义侧滑:手指在屏幕上按下之后向着某一侧方向滑动 我的理解是,广义侧滑包含狭义侧滑,只不过是触发区域是否在屏幕边缘的区别罢了。...,无法解决侧滑时不是控件移动的效果。...一行代码添加侧滑手势识别功能 侧滑时,主view保持不动,手指释放时,识别滑动方向及速率,以确定是否执行对应的侧滑逻辑。...xml布局文件 也不需要侵入BaseActivity 支持全屏侧滑和(/或)边缘侧滑返回 支持 上/下/左/右 4个方向侧滑返回 //仿手机QQ的手势滑动返回 SmartSwipeBack.activityStayBack

    1.9K20

    你见过微信侧滑返回的联动效果,但开门效果、百叶窗效果见过吗?

    SmartSwipe是一个Android侧滑处理框架,它封装了对控件侧滑事件(上/下/左/右4个方向滑动的手势事件)的捕获、分发及多点交替滑动的处理,基于SmartSwipe我们可以为控件添加各种你想要的侧滑效果...狭义侧滑:从屏幕的某个边缘开始向着远离该边缘的方向滑动 广义侧滑:手指在屏幕上按下之后向着某个方向滑动 我的理解是,广义侧滑包含狭义侧滑,只不过是触发区域是否在屏幕边缘的区别罢了。...对被侧滑控件的touch事件进行拦截分析,确认是否将其捕获作为侧滑手势 然后计算好侧滑的实时位移(手指滑动的位移,而不是不依赖于View的left与top) 再通过策略模式(Strategy Pattern...2.3 SmartSwipe的实现原理 SmartSwipe在ViewDragHelper的基础上,将它对子View的捕获及移动处理改造成对父View自身触摸事件的定性(能否及是否捕获)、定向(捕获的事件所触发的侧滑方向...于是,侧滑的手势事件识别及滑动距离计算的工作在框架内部就统一完成了,至于根据侧滑距离来实现各种不同的UI呈现效果,就可以很方便地通过继承SwipeConsumer来实现了。

    1.9K10

    iOS开发常用之摄像照相视频音频处理

    EZAudio - EZAudio是一个iOS和OSX上简单易用的音频框架,根据音量实时显示波形图,基于Core Audio,适合实时低延迟音频处理,非常直观。中文介绍,官网。...删除任何你不想要的记录段。可以使用任何视频播放器播放片段。保存的记录可以在序列化的NSDictionary中使用。(在NSUserDefaults的中操作)添加使用Core Image的视频滤波器。...DraggableYoutubeFloatingVideo - 展示像类似Youtube移动应用的那种浏览视频的效果,当点击某视频时能够从右下方弹出一个界面,并且该界面能够通过手势,再次收缩在右下方并继续播放...Eleven - Eleven Player - 一个使用FFmpeg实现的简单强大的iOS开源播放器。 mobileplayer-ios.swift - 很不错的高度可定制播放器项目。...BMPlayer.swift - 基于AVPlayer使用Swift封装的视频播放器,方便快速集成,支持横屏,竖屏,上下滑动调节音量,屏幕亮度,左右滑动调节播放进度。

    3.7K51
    领券