iOS播放器常用功能

article/2025/10/3 22:44:29

iOS播放器常用功能

强制横屏

在播放器中常见强制横屏,例如,如下这种:
强制横屏

OC实现代码如下:

    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {SEL selector             = NSSelectorFromString(@"setOrientation:");NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];[invocation setSelector:selector];[invocation setTarget:[UIDevice currentDevice]];int val                  = orientation;// 从2开始是因为0 1 两个参数已经被selector和target占用[invocation setArgument:&val atIndex:2];[invocation invoke];}

拖动调节音量

在播放器器中,通常是拖动来调节音量。需要使用到MPVolumeView
MPVolumeView是Media Player Framework中的一个UI组件,直接包含了对系统音量和Airplay设备的音频镜像路由的控制功能。其中包含一个MPVolumeSlidersubview用来控制音量。这个MPVolumeSlider是一个私有类,我们无法手动创建此类,但这个类是UISlider的子类。
遍历MPVolumeSlidersubview获取到这个slider

MPVolumeView *volumeView = [[MPVolumeView alloc] init];
for (UIView *view in [volumeView subviews]){if ([view.class.description isEqualToString:@"MPVolumeSlider"]){_volumeSlider = (UISlider*)view;break;}
}

添加对应的拖动手势

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panDirection:)];
pan.delegate                = self;
[self.view addGestureRecognizer:pan];

对应的拖动事件为,这里仅仅是一个简单的例子,上下拖动时改变slider的value

    /***  pan手势事件**  @param pan 拖动手势*/- (void)panDirection:(UIPanGestureRecognizer *)pan{CGPoint veloctyPoint = [pan velocityInView:self.view];switch (pan.state) {case UIGestureRecognizerStateBegan:{ // 开始移动// 使用绝对值来判断移动的方向CGFloat x = fabs(veloctyPoint.x);CGFloat y = fabs(veloctyPoint.y);if (x > y) {// 水平移动_verticalPan = NO;}else if (x < y){// 垂直移动_verticalPan = YES;}break;}case UIGestureRecognizerStateChanged:{ // 正在移动if (_verticalPan) {self.volumeSlider.value -= veloctyPoint.y / 10000;}}case UIGestureRecognizerStateEnded:{ // 移动停止}default:break;}}

结果要在真机上测试才行,结果如下:

拖动调节音量

调节亮度

通洞调节亮度跟上面差不多,如下:

    [UIScreen mainScreen].brightness -= veloctyPoint.x / 10000;

只是没有提示,所以自己要自定义一个提示框BrightnessView。在中BrightnessView使用KVO观察[UIScreen mainScreen]的brightness的变化

    [[UIScreen mainScreen] addObserver:selfforKeyPath:@"brightness"options:NSKeyValueObservingOptionNew context:NULL];

在亮度变化后作出相应的调整:

    - (void)observeValueForKeyPath:(NSString *)keyPathofObject:(id)objectchange:(NSDictionary *)changecontext:(void *)context {CGFloat sound = [change[@"new"] floatValue];//处理对应的逻辑}

http://chatgpt.dhexx.cn/article/bWJC2LuK.shtml

相关文章

IOS开发之——音乐播放器-播放器页面(05)

一 概述 播放器页面Storyboard点击列表Cell时&#xff0c;播放器页面show弹出播放器页面按钮对应的功能 二 播放器页面Storyboard 2.1 Storyboard界面 2.2 界面说明 界面分类&#xff1a;顶部View和底部View两部分顶部View&#xff1a;歌曲大图、名字背景(歌曲名和歌手名)、…

西瓜视频 iOS 播放器技术重构

动手点关注 干货不迷路 &#x1f446; 播放器简介 播放器是西瓜视频等视频类 App 最主要的业务场景&#xff0c;也是最主要的流量入口&#xff0c;其承载包括下层基础播放&#xff0c;上层的各种播放业务&#xff1a;状态栏、弹幕、音量、亮度、评论、点赞、进度、倍速、清晰度…

iOS系统自带的视频播放器

简述:MPMoviePlayerController,MPMoviePlayerViewController,AVPlayerViewController三种视频播放器的讲解1.MPMoviePlayerController效果:MPMoviePlayerController 密码: yam8MPMoviePlayerController&#xff0c;在MediaPlayer框架中 #import <MediaPlayer/MediaPlayer.h&…

iOS 超好用的本地视频播放器推荐!

本地播放器作为日常生活中不可或缺的一款工具类APP&#xff0c;Windows、Android等平台不乏一些功能与体验兼优的产品&#xff0c;但 iOS 平台的用户就没有那么幸运了&#xff0c;优秀的产品凤毛麟角&#xff0c;且多数收费。 这源于 iOS 平台的特殊性&#xff0c;完美支持各种…

iOS视频播放器之ZFPlayer剖析

1、引言 本文主要针对ZFPlayer的功能实现来剖析&#xff0c;以及总结一下大家遇到的问题和解决方案 首先ZFPlayer现在拥有的功能&#xff1a; 支持横、竖屏切换&#xff0c;在全屏播放模式下还可以锁定屏幕方向 支持本地视频、网络视频播放 支持在TableviewCell播放视频 左侧1/…

996程序员办公室猝死?公司:没死,继续上班了

程序员头条 报道 网传 996 程序员办公室猝死&#xff0c;公司回应&#xff1a;系因低血糖晕倒 日前&#xff0c;一则“996程序员办公室猝死”的视频在网络传播。根据视频显示&#xff0c;一名男子扶着办公桌栏短暂逗留之后&#xff0c;直挺挺的摔倒在地面。 事发后&#xff0c;…

网传京东37岁程序员在工位猝死。当事人:我还没死,还能加班!

编程牛人整理 近日微信群里疯传&#xff0c;一男子在工位突然倒地的图片与视频&#xff0c;随后&#xff0c;有自媒体称&#xff0c;这位倒地的员工系京东程序员疑似因常年夜班在工位猝死。 3月25日&#xff0c;网传消息称&#xff0c;该员工今年37岁&#xff0c;在加班过程中猝…

35岁程序员被公司辞退,生活压力太大痛哭,中年危机如何自救?

多数人都喜欢安逸的生活&#xff0c;尤其是随着年龄的增长&#xff0c;很多人都希望工作和生活趋于稳定&#xff0c;不愿意再让生活有很大的变动。可是&#xff0c;当达到一定的年龄时&#xff0c;危机还是存在的。 如今已经35岁的杰哥&#xff0c;是一个典型的理工男&#xf…

秒啊!程序员防猝死指南来了!

‍‍ 作者 | 咏春警告的胖虎 来源 | golang小白成长记&#xff08;ID&#xff1a;golangxbczj&#xff09; 过年之前&#xff0c;跟我可爱的小侄子通了个电话&#xff0c;上来就说&#xff0c;"叔叔你头发怎么变少了"&#xff0c;我很痛心&#xff0c;我的小侄子&…

程序员工作猝死给公司造成损失可以找其父母追讨吗?

从 996.icu 开始&#xff0c;996开始被热议&#xff0c;马巴巴说&#xff1a;“996 是福报”&#xff0c;东哥说&#xff1a;“81168”。然后 90 后乃至 00 后被推出来说&#xff1a;“这届真难带&#xff01;”。我一直认为网上有个段子说得好。  ☠ 月薪5W&#xff1a;996就…

程序员离职事件始末

吴小胖第10次推送 阅读时间预计3分钟~ 这是我毕业后的第一份工作... 面试时&#xff0c;HR小姐姐告诉我... 然鹅...我入职之后才发现&#xff1a; 对标阿里的只有加班强度 对标华为的只有狼性文化 对标百度的&#xff0c;额&#xff0c;没有对标百度 同事们有的住在海淀区、有的…

为什么程序猿996会猝死,而企业家007却不会?

想和吴小胖一起工作吗&#xff1f; 内推邮箱【shen_baili163.com】&#xff0c;响应P99非常小 其实&#xff0c;也可以关注公众号&#xff0c;不取关的那种哦 然后留言&#xff0c;我会主动联系你哟 后面还会继续更新Apache Dubbo源码分析和ElasticSearch的内容哦&#xff0c;大…

唉!一 28 岁程序员因新冠离世。。。

上一篇&#xff1a;为什么总是闹离职的员工没走&#xff0c;平时不吭声的员工却突然离职&#xff1f; 2022年12月19日&#xff0c;微信公众号万户楼台 发布《西安28岁程序员重症病危》的内容。 病人名字为郭晓桐&#xff08;94年生&#xff09;&#xff0c;年龄28岁。 其没有基…

成年人的崩溃只在一瞬间,程序员凌晨三点写的代码竟被女友删了...

对于恋爱中的情侣来说&#xff0c;吵架是很正常的事情&#xff0c;就算是再怎么亲密&#xff0c;也难免会出现意见不合的时候。 吵架不可怕&#xff0c;可怕的是&#xff0c;受吵架情绪的影响&#xff0c;做出一些比较“极端”的事情。 之前某社交平台上一位女生吐槽自己的男…

违法?猝死?你肯定不知道程序员还有这些“高危”操作

全文共2975字&#xff0c;预计学习时长9分钟 图源&#xff1a;百度 10月24日&#xff0c;一段“996程序员猝死在1024程序员节”的视频在各大IT群疯传。不久 “程序员猝死”的消息被搬上了热搜。 图源&#xff1a;微博 看毕&#xff0c;坐在电脑面前的程序员们觉得自己的心跳仿佛…

59% 的程序员曾担心自己猝死!

近期&#xff0c;接连发生的几起猝死事件引发人们的警觉&#xff0c;年轻人健康的话题成为大众持续关注的热点。 1月25日&#xff0c;丁香医生数据研究院发布了《2021国民健康洞察报告》&#xff08;以下简称“报告”&#xff09;&#xff0c;在56196个样本调查中&#xff0c;…

程序员防猝死!!!

自从踏上了这条路&#xff0c;我就早已把生死置之度外了。 如果我死了&#xff0c;只能证明我不过是如此程度的男人。 ​ -----------罗罗诺亚索隆 昨天&#xff0c;微信群里传苏宁程序员上班期间倒地猝死。 这种消息对本身就是程序员的我们&#xff0c;已经不是什么新闻了。…

又一程序员猝死...

声明&#xff1a;本文首发微信公众号【菜鸟要飞】&#xff0c;如有转载&#xff0c;请标明出处&#xff01; 今日在脉脉上看到了一篇不幸的消息&#xff1a;今日头条一名iOS开发猝死了。据网上消息说&#xff0c;此开发曾是腾讯OMG开发组长。 逝者为大&#xff0c;又是同行&am…

又一个程序员倒下-程序员防猝死指南

作者&#xff1a;蒋丽丽 http://news.html5tricks.com/programmer-life-health.html 程序员通常给人的感觉就是高智商、高收入、高压力群体。的确&#xff0c;对于程序员来说&#xff0c;加班可以说真的是家常便饭&#xff0c;虽说是工作8小时制&#xff0c;但是为了赶开发进度…

程序员防猝死指南——程序员养生攻略

程序员在其职业生涯中&#xff0c;健康问题尤为突出。但是大部分程序员只顾码字&#xff0c;却往往忽略了自身的健康问题。这或许是因为写代码太入神&#xff0c;也或许是因为来自老板的压力太大。但这些并不是你折磨自己最好的理由&#xff0c;我们程序员也需要养生&#xff0…