首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift 5无法向自定义按钮添加操作(AVPlayerViewController中的addTarget问题)

Swift 5无法向自定义按钮添加操作的问题是由于AVPlayerViewController中的addTarget方法不可用导致的。AVPlayerViewController是一个用于播放视频的控制器,它提供了一些默认的控件,如播放/暂停按钮、进度条等。然而,AVPlayerViewController并不支持直接向自定义按钮添加操作。

解决这个问题的方法是使用AVPlayerViewController的contentOverlayView属性,该属性可以让我们在AVPlayerViewController上添加自定义视图。我们可以创建一个自定义按钮,并将其添加到contentOverlayView上,然后为按钮添加操作。

以下是解决该问题的步骤:

  1. 创建一个自定义按钮:
代码语言:txt
复制
let customButton = UIButton(type: .custom)
customButton.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
customButton.setTitle("Custom Button", for: .normal)
customButton.addTarget(self, action: #selector(customButtonTapped), for: .touchUpInside)
  1. 将自定义按钮添加到AVPlayerViewController的contentOverlayView上:
代码语言:txt
复制
if let playerViewController = AVPlayerViewController() {
    playerViewController.contentOverlayView?.addSubview(customButton)
}
  1. 实现自定义按钮的操作方法:
代码语言:txt
复制
@objc func customButtonTapped() {
    // 在这里实现自定义按钮的操作
}

这样,我们就可以向AVPlayerViewController中添加自定义按钮,并为按钮添加操作了。

推荐的腾讯云相关产品:腾讯云视频直播(https://cloud.tencent.com/product/css),该产品提供了丰富的视频直播解决方案,可用于在移动应用或网站中实现视频播放功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

点击视频以显示自定义播放器控制器。 很好! 视频在自定义控制器播放。 但是……如果您点击画中画按钮,则什么也不会发生。 别担心,你现在会解决这个问题。...接下来,您将添加功能,以便您用户可以在自定义播放器控制器启动和停止画中画。 1....此外,如果您点击按钮从画中画返回标准播放,则不会发生任何事情。接下来您将解决这些问题第一个。...现在启动画中画会关闭自定义播放器控制器,并关闭画中画窗口。 但是,如果您点按按钮以从画中画返回标准全屏播放,继续播放相同视频,则没有任何反应。 你现在会处理这个问题。...这对于默认 AVPlayerViewController自定义播放器控制器都是如此。 要摆脱困境,您需要添加播放器控制器恢复功能。

2.6K10

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

下载好材料打开 TravelVlogs.xcodeproj 并转到 VideoFeedView.swift。 注意:视频可能无法在模拟器播放。 在真实设备上运行该应用程序将缓解该问题。...为了考虑用户选择, VideoFeedView.swift 添加一个 state 属性: @State private var selectedVideo: Video?...您下一个任务是将黑框变成自定义视频播放器。 它目的是播放一组循环剪辑,让用户对所有这些视频感到兴奋。 然后,您需要添加一些自定义手势,例如点击打开声音和双击将其更改为 2 倍速度。...这表明添加自定义控件以与自定义视频视图交互是多么容易。 现在,您只需轻按一下即可提高音量并进入快播状态。 5....PiP 视频无法在环境模式下播放。 打开 AppMain.swift添加此方法: private func setVideoPlaybackCategory() { try?

6.9K10

36.Swift学习之Associated Object

介绍 Swift 可以利用 OC runtime 和 KVC ,在运行时一个对象添加值存储,这种方式称之为Associated Object。...,并且通过 & 操作符取地址并作为 UnsafeRawPointer 类型被传入,这在 Swift 与 C 协作和指针操作时是一种很常见用法。...((UIButton)->Void){ block(button) } } } UIButton 传参 项目开发,经常会有类似九宫格菜单按钮,每个按钮点击时参数是不一样...,此时可以有如下几种方案: 创建 9 个按钮,逐一设置 通过 for 创建 9 个 UIButton,为 UIButton设置不同tag,然后在点击事件里面用 switch case判断 自定义UIButton...,添加自定义属性 利用 Associated Object 绑定参数 class ViewController: UIViewController { // 不同参数 let

2.1K20

iOS开发之AVKit框架使用 原

iOS开发之AVKit框架使用 一、引言     在iOS开发框架,AVKit是一个非常上层,偏应用框架,它是基于AVFoundation一层视图层封装。...其中相关文件和类都十分简单,本篇博客主要整理和总结AVKit相关类使用方法。...从上面的示例代码也可以看出,对于AVRoutePickerView,我们基本没有任何可以进行自定义余地,从UI效果到按钮触发方法全部由AVKit封装好了,它只是一个唤出系统功能接口。...三、AVPlayerViewController     AVPlayerViewController是对AVFoundationAVPlayer与AVPlayerLayer封装,它是一个封装好视图控制器...(nonatomic, readonly) CGRect videoBounds; //内容覆盖层 可以其上添加子视图 会出现在视频层与控制层之间 @property (nonatomic, readonly

2.1K20

Swift-MVVM 简单演练(一)

通过增加tabBarItem方式,给中间留出一个+按钮位置 自定义一个UIButton分类HQButton+Extension,封装快速创建自定义按钮方法 HQButton.swift extension...:简化控件创建 ---- 解决导航栏侧滑返回过程按钮及标题融合问题 因为侧滑返回时候,leftBarButtonItem及title字体有渐融问题,我们又想解决这样问题。...所以如果当真用时候要慎重! ---- 监听注册和登录按钮点击事件 在HQVistorView里将两个按钮暴露出来,然后直接在HQBaseViewController添加监听方法即可。...则可以直接通过addTarget方式为该视图中按钮添加监听方法 这样做代价是耦合度高,控制器和视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录时导航按钮 如果单纯在setupVistorView...`位,在`32`位机器是`32`位 如果不写明`Int 64`在 iPad 2 / iPhone 5/5c/4s/4 都无法正常运行 */ /// 微博ID var

10.2K51

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

实际上多人协作项目中我们尽可能少用Storyboard,因为很容易出现冲突问题。况且从学习角度,storyboard很难说清楚操作步骤是什么。在这上面我其实花了不少时间,但是我认为很值得。...动画效果,在它之上加了修改,支持传入自定义UI属性,方便做组合型动画(例如本例按钮不仅放大而且上下移动) 动画变化原理是将相应ViewController进行Scale变换,再通过一个Bubble...解决方法:iOS10之后权限问题,在info.plist里添加相应权限以及描述即可。...(tmpItems) { (error) in } - 如果调试过程,发现模拟器上重新了之前spotlight缓存无法清除情况,请更换新模拟器,或者重置模拟器。...这种交互适用于Accessory比较简单情况,例如对交互按钮大小和内容无要求情况;如果有特殊要求,需要自定义UITableViewCell,手动控制Cell与捕捉UIPanGesture来进行实现。

2.4K20

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

在iOS8,iOS开发框架引入了一个新视频框架AVKit,其中提供了视频开发类AVPlayerViewController用于在应用嵌入播放视频控件。... 自定义控件可以添加在其上 @property (nonatomic, readonly, nullable) UIView *contentOverlayView; //画中画代理 iOS9后可用...是默认支持画中画操作,如上图所示,视频播放界面右下角出现一个画中画按钮,点击这个按钮当前播放视频界面会缩小显示在屏幕角落,这时点击Home键回到主界面,或者切换到其他应用程序,视频播放不会中断。...AVPlayerViewControllerDelegate方法可以对用户画中画操作进行监听: //将要开始画中画时调用方法 - (void)playerViewControllerWillStartPictureInPicture...:(AVPlayerViewController *)playerViewController{     return YES; } //用户点击还原按钮 从画中画模式还原回app内嵌模式时调用方法

2K40

iOS 仿支付宝银行卡界面(支持Swift和OC)

初始化WalletView并加载钱包头部视图walletHeader 在需要加载钱包地方初始化WalletView,并自定义头部视图walletHeader和卡片视图,Demo 以ViewController...在钱包视图中重新加载卡片视图 在钱包视图中重新加载卡片视图,在这里为了灵活修改方便使用,页面布局可以自定义,Demo模仿支付宝页面进行设计,在CardView视图中,主要实现页面的交互等功能,具体UI...在钱包视图中实现添加卡片方法 在展示页面我们可以看到,在页面的左上角有一个添加按钮,这个按钮UI布局在头部视图中实现,具体功能是,添加一个卡片,具体实现方法如下: open func insert...在CardView实现点击手势展示隐藏卡片 在Demo实现在CardView中点击除了删除按钮外任何位置,都可以触发隐藏卡片功能,这里是在CardView添加了手势来实现该功能,代码如下: public...导入项目使用介绍 最后介绍一下该如何在项目中导入该功能,下载Demo,将DemoFBYBankCard.framework文件和ColoredCardView.swift文件导入项目中,在需要加载页面中直接引用即可

1.4K20

教你如何自定义AlertView

前言: 系统自带alertView界面有点呆板,动画有点单一,总之随着业务发展,系统自带alertView已经很难满足我们需求,那自定义就很有必要。...本文就介绍如何自定义alertView,看完你就懂得制作属于自己alertView了 一、创建DWAlert.swift 创建一个类名为在DWAlert.swift,在class DWAlert:...上面代码const是为了定义弹出框需要坐标和长宽,由于是不变,所有let修饰,与OC常量类似 二、绘制alertView 写一个继承init方法,把title(alert标题),content...方法添加backImageView背景蒙版 2、获取当前主窗口,并定义一个alertViewframe 3、利用UIView.animate对alertView进行动画操作。...五、使用DWAlert 在ViewController创建一个按钮,并添加一个点击事件ClickMe,在方法里面创建alertView @IBAction func ClickMe(_ sender:

1.2K50

点亮你 App 5 个 iOS 库

TKRubberIndicator TKRubberIndicator是Swift制作库,它可在应用程序添加橡胶动画页面控件。要使用它,您需要首先导入TKRubberPageControl框架。...然后,您需要将以下代码添加到控制器: override func viewDidLoad() { super.viewDidLoad() page.center =...TransitionButton TransitionButton是一个用于添加带有加载和过渡动画 UIButton 库。首先,TransitionButton 是 UIButton 子类。...TransitionButton 还添加了两个主要方法: • startAnimation():调用时将开始使用加载微调器为按钮设置动画 • stopAnimation():调用时将停止对按钮进行动画处理...Sliders Sliders是完全使用 SwiftUI 构建库。它使您可以在 iOS,macOS 和 Mac Catalyst 上创建可自定义水平和垂直滑块。

60620

自学Swift之路(二)UITableView自定义和实际利用

自定义,附带场景使用(简单demo) 创建工程什么就不说了,先看一下界面然后咱们直接开始代码: ?...6EDD4AC9-47E3-401F-91A4-2DA836439787.png Demo开始之前,我们想想应该会使用到屏幕宽高等一些常用值,在OC,咱们可以使用PCH然后宏定义,然而在Swift...DA345C16-932E-4524-8D93-5FDBAD540F3C.png 另外,在上面的界面截图中,我们发现用到了navigationController,这个demo自定义了它(从上面截图也能看出来...coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } 代码自定义单元格加上了一个...ImageView和一个Label,虽然数据是死,但是在Swift,另外一个类是可以直接访问另一个类变量(如果没做任何保护的话),所以我们在配置cell时候是可以直接赋值,这里就不弄了,然后我们看创建表视图那一块

2.3K90

iOS小技能: Target-Action设计模式运用

控制对象是UIControl(iOS)或NSControl(OSX)子类实例。 其中一个对象保存着事件发生时另一个对象发送所需信息。...存储信息由两个数据项组成:动作选择器(用于标识要调用方法)和目标(用于接收消息对象) Target-Action模式主要包含两个部分: Target(对象):接收消息对象,通常是自定义控制器。...设置目标和操作 - (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents...对于方案二:由于SDK为控件添加了一个默认触发类型Action,因此,如果开发者在开发过程中使用UIControl类allTargets或者allControlEvents属性进行逻辑判断,有可能会引入一些无法预料问题.../article/details/117352527 在项目开发,会对数据库数据进行更新操作接口请求,不仅服务器侧需要控制请求频率以及保证数据唯一性和一致性,app侧也需要进行限制来避免测试垃圾数据

76520

开发中使用throttle和debounce

前言 不管是WEB还是Android或者是iOS开发 我们都会有这样问题 按钮点击时 连续点击只让第一次生效 搜索时文本不断变化导致调用多次接口 上面的两个问题解决后能大大提升用户体验 解决它们就用到了...RxJava 实际使用 iOS(OC/Swift) MessageThrottle Swift可以用RxSwift 如果项目中已经用到 或者想用RxSwift的话就选择第二种方式 如果项目不想引用太多东西...设置间隔为5秒 可设置模式有三种 rule.mode = MTPerformModeFirstly; rule.mode = MTPerformModeLast; rule.mode = MTPerformModeDebounce...; ---- MTPerformModeFirstly 如果连续点击按钮5s第一次生效 MTPerformModeLast 如果连续点击按钮5s最后一次生效 MTPerformModeDebounce...如果连续点击按钮 则重置计时器 停止点击后5s操作生效 ---- 在Swift中使用 self.usernameTextField.addTarget(self, action: #selector(

1.6K51

Swift 基本语法01-Swift简介

只有闭包时候才去用 取消了预编译指令 自动推导:变量/常量类型会根据=(等号)右侧代码执行结果,推导对应类型 Swift 对类型要求异常严格,不允许直接运算(不会做默认隐式转换,所有的类型确定...Int(y)->结构体构造函数 Swift ,不存在基本数据类型,都是结构体(考虑安全性和速度,统一做了语法调整) 1....btn.addTarget(self, action: #selector(clickMe), for: .touchUpInside) // 按钮点击事件 func clickMe(btn:UIButton...可选项(Optional) Optional是 Swift一大特色,也是Swift初学者最容易困惑问题 定义变量时,如果指定是可选,表示该变量可以有一个指定类型值,也可以是 nil 定义变量时...,在类型后面添加一个?

2K70

30DaysOfSwift - Day1 计时器

前几天逛Github,偶然看到一个Swift项目 —— 30DaysOfSwift,作者一共用30个小项目,来熟悉Swift语言,而我正好也学习了一段时间Swift语言,准备仿照这样模式,来更加深入了解...而我一直都是喜欢用纯代码布局,UI搭建也是使用代码完成。所以我在写这个小Demo之前在我项目里集成了SnapKit,使用类似Objective-C中常用masonry框架来完成自动布局。...这里我还发现一个Swift问题,使用cocoadPods集成第三方库,引用不到头文件解决方法和Objective-C不一样。...这是第一个Swift小Demo,很简单,也很好帮助熟悉UI. import UIKit import SnapKit let SCREEN_WIDTH = UIScreen.mainScreen()...let kPauseButtonWidth = SCREEN_WIDTH * 0.4 //暂停按钮宽度 let kStartButtonWidth = SCREEN_WIDTH * 0.6 //开始按钮高度

78440

【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

二、代码实现 2.1 程序入口说明 Application/AppDelegate.swift文件@UIApplication注解,表示这个Class类是程序入口 ?...2.3.2 添加一个按钮,并添加按钮点击事件监听方法 // 2.创建一个按钮 let btn = UIButton(type: .contactAdd) // 2.1 添加到当前视图 v.addSubview...当编译器提示时候,再添加,会对语境有更好机会; 原因:闭包(类似于 OC block)需要使用self。 3.4 不需要; 除非多行代码语句写在同一行。...,不需要使用`:` OC: @selector 3.7 调试对比 Swift: print(xxx) 效率高,log不包含时间,用#function来打印当前执行方法 OC: NSLog,用__FUNCTION...如下图所示,我在注释添加了MARK、TODO、FIXME标签前缀,这些特殊标记锚点菜单将会显示在导航栏上,点击菜单即可跳转到对应注释地方,非常方便。 ?

3.6K31

Swift开发:自定义标签栏UITabBarController (Swift项目开始第一步)

Swift学习过程,个人感觉虽说两种语言相似度很大,但是Swift依然在代码风格上有着和OC很大差异。...在总结了一些基本用法之后,我尝试使用Swift自定义UITabBarController和UITabbar,开启这Siwft项目的关键一步,首先展示一下效果图: ?...第二步:准备资源文件 1.在Assets.xcassets存放标签栏按钮所需要图片资源 ?...屏幕快照 2017-07-15 下午1.46.26.png 这里做下说明,之所以创建这个plist文件是因为在之后创建视图控制器和标签按钮时会有很大便利性,而且也十分方便真实开发过程需求更改。...第三步:创建视图控制器 自定义导航控制器和视图控制器父类,并且创建三个继承于BaseViewController视图控制器(因为没有过多复杂操作,这里省略代码),为之后创建标签控制器做准备。

3.9K70

UIButton使用方法汇总

.showsTouchWhenHighlighted = YES; 按下按钮,并且手指离开屏幕时候触发这个事件,跟webclick事件一样。...触发了这个事件以后,执行butClick:这个方法,addTarget:self 意思是说,这个方法在本类也可以传入其他类指针 [button1 addTarget:self action:@selector...有:表示调用有参数doSome 没:  则表示调用没参数 同理action:@selector(doSome:asd:) 调用- doSome: xx asd:xx; //取消按钮已经添加所有事件...是否在dealloc对UIButton对象进行release操作,取决于UIButton初始化方式。...,字体大小 今天遇到个很简单几个问题,关于UIButton,以前没有很注意,就是设置它文字显示位置,字体大小。

1.2K50
领券