欢迎来到皮皮网网首页

【源码带演示站】【msi源码】【richedit源码】uikit源码

来源:福建论坛源码 时间:2024-12-24 04:30:04

1.uikitԴ?源码带演示站?
2.如何开发一个 AVPlayer iPad 程序

uikit源码

uikitԴ??

       ç¡¬ä»¶å‰ç«¯å¼€å‘和硬件后端开发哪个工资高嵌入式开发和硬件前端开发是一回事吗???

       åµŒå…¥å¼å¼€å‘分硬件和软件开发,其中硬件和软件里面还要细分,很多岗位和领域。说到哪个工资高,不好说,这和不同地域,不同岗位和不同水平有关系,所以不能一概而论。建议无论做到哪个领域,先学好再说,不要太在乎工资。

       è½¯ä»¶å¼€å‘,前端开发,和后端开发,哪个更累,哪个更挣钱,谢谢指点

       é¦–先,软件开发几乎包括了一切,不仅包括前端后端还包括嵌入式都是软件开发。

       å‰ç«¯å¼€å‘跟后端开发,都很累,全看个人。

       å‰ç«¯ç›®å‰æ›´èµšé’±ï¼Œå› ä¸ºå‰ç«¯æ­£åœ¨èš•é£Ÿå…¶ä»–桌面领域的份额,因为前端现在任何界面都可以跑(Linux、Win、Mac、Andriod、iPhone),这些领域的价值正在被转移到前端(特指网页前端),也就是说目前前端是能做事情最多的,至少是看上去。

       å¾€é«˜çº§æŠ€æœ¯è®²ï¼ŒåŽç«¯ä¼šæ¯”前端要难,也要更累,工资也更高。

       æ‰€ä»¥ï¼Œç†è®ºä¸Šï¼Œåˆçº§ç¨‹åºå‘˜å‰ç«¯å·¥èµ„高,高级程序员后端工资高。

       ä½†æ˜¯ï¼Œå®žé™…上,初级才会分前后,高级程序员啥都要。

学java出来后,做前端还是后端好?

       ä»ŽæŠ€æœ¯æœ¬èº«æ¥è¯´ï¼Œjava本身会偏向后端一些;如果你对前端感兴趣的话,像node.js、bootstrap、vue.js等等前端框架看下自己有没有掌握,现在不是懂点Html+css或者能写点ajax就可以做前端了。当然,做前端的话,除此以外,对网站的配色、页面的布局,包括一些审美等等还是有点小要求的,如果你能达到的话,你可以尝试去做前端。

       å°±ç›®å‰æ¥è¯´ï¼Œéšç€å‰åŽç«¯åˆ†ç¦»ï¼Œå‰ç«¯å’ŒåŽç«¯çš„薪资待遇这块儿都差不多了。选择前端还是后端很多时候看个人意愿吧,或者是觉得自己前端强点儿还是后端强点儿!不过,从个人建议上来说还是后端会更好些,因为前端相对来说比较简单,做了一段时间的后端还可以转去做前端。另外的话,就是很多时候几个项目可以用同一套前端框架,需要的话改改就好,除非对前端要求较高,一个项目一套前端,一般像这种情况还是比较少的。

学编程能做什么工作?

       çœ‹ä½ å­¦å“ªæ–¹é¢çš„,学编程可以做前端开发,后端开发,嵌入式开发,还有运维等工作,做前端要学html、css、js和ps,后端的话还要多学一门后端语言java、python等,运维学linux、shell等。

网页设计前端和后端的区别?越详细越好。

       è¯¦ç»†çš„解释一下web前后端的区别

       1、

       å‰å°ï¼šå‘ˆçŽ°ç»™ç”¨æˆ·çš„视觉和基本的操作。

       åŽå°ï¼šç”¨æˆ·æµè§ˆç½‘页时,我们看不见的后台数据跑动。后台包括前端、后端。

       å‰ç«¯ï¼šå¯¹åº”我们写的html、css、javascript等网页语言作用在前端网页。

       åŽç«¯ï¼šå¯¹åº”jsp、javaBean、dao层、action层和service层的业务逻辑代码。(包括数据库)

       ä¸ºä»€ä¹ˆjsp是后端呢?主要是jsp的运行原理是在tomcat服务器运行的。

       2、

       (1)javaweb是java开发中的一个方向java有搞安卓的,搞web的,搞嵌入式的等。javaweb就是指搞web方向的,javaweb分两块,一块是服务器端叫后端,另一块叫前端,也就是web前端。前端就是用户能看到的部分,比如淘宝网,qq空间,网页上你能看到的都是web前端做的。后端做的就是为前端的展示业务逻辑功能做处理。

       (2)javaweb包括了jsp,servelt以及一些框架比如spring,structs以及与数据库交互的知识,当然也涉及到了html,css等前端技术,但是更侧重于后端的开发。web前端主要是html,css,javascript之类的技术。

       jaweb是javaee的一个方向,Javaweb,由前端、Java代码、和数据库三个大方面组成,前端只是其中之一。

       (3)在我们的机子上看到的界面,安装的程序,给用户看的,操作的就是前端;而你看不到的,帮你保存网络游戏数据,保存应用数据,处理数据的就是后端(服务器)。比如说:我们在用的知乎就是前端,而保存这个问题,还有把这个问题推送给你的就是后端。

       äºŒã€å®šä¹‰ä¸åŒ

       ä¸€èˆ¬æ¥è¯´ï¼Œæˆ‘们将网站分为前端和后端。前端主要负责页面的展示,后端则是业务逻辑的实现。

       1、Web前端:

       é¡¾åæ€ä¹‰æ˜¯æ¥åšWeb的前端的。这里所说的前端泛指Web前端,也就是在Web应用中用户可以看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。

       2、Web后端:

       åŽç«¯æ›´å¤šçš„是与数据库进行交互以处理相应的业务逻辑。需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。

       ä¸‰ã€éœ€è¦æŽŒæ¡çš„技术不同

       1、Web前端:

       ç²¾é€šJS,能熟练应用JQuery,懂CSS,能熟练运用这些知识,进行交互效果的开发。

       (1)精通HTML,能够书写语义合理,结构清晰,易维护的HTML结构;

       (2)精通CSS,能够还原视觉设计,并兼容业界承认的主流浏览器;

       (3)熟悉JavaScript,了解ECMAScript基础内容,掌握1-2种js框架,如JQuery;

       (4)对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案;

       (5)对性能有一定的要求,了解yahoo的性能优化建议,并可以在项目中有效实施。

       2、Web后端:

       åŽç«¯å¼€å‘人员:会写Java代码,会写SQL语句,能做简单的数据库设计,会Spring和iBatis,懂一些设计模式等。

       (1)精通jsp,servlet,javabean,JMS,EJB,Jdbc,Flex开发,或者对相关的工具、类库以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解;

       (2)练使用oracle、sqlserver、mysql等常用的数据库系统,对数据库有较强的设计能力;

       (3)熟悉maven项目配置管理工具,熟悉tomcat、jboss等应用服务器,同时对在高并发处理情况下的负载调优有相关经验者优先考虑;

       (4)精通面向对象分析和设计技术,包括设计模式、UML建模等;

       (5)熟悉网络编程,具有设计和开发对外API接口经验和能力,同时具备跨平台的API规范设计以及API高效调用设计能力。

       å››ã€web后端和前端是怎么连接的?

       1、web服务器(apache、tomcat等),网络协议(或者php等都可能,但javaweb可以确定后端就是java,web前端其实都一样。

       å‰ç«¯å’ŒJavaweb的区别更多的在于一个主要负责前端的设计和效果,而Javaweb更专注于后端的内容。

       3、刚开始从事web开发时,首先要选准学习方向,看是想从事前端部分还是后端程序部分。当然在工作的后期,就不会分的那么细致了。做前端到后期也会懂一些后端的技术,反之,后端也是。

       å…­ã€å­¦ä¹ Web前端开发都需要掌握哪些技能?

       1、学习html。这个是最简单的,也是最基础的.要熟练掌握div、formtable、ulli、p、span、font这些标签,这些都是最常用的,特别是div和table,div用于布局、table也可以用于布局,但是不灵活,基本table是用来和数据打交道。

       2、学习css。这里说的css不包括css3,一般我们看到web前端开发工程师的要求里面,有一个会使用css+html或者css+div来进行界面布局,所以css是用于辅助html来布局和展示的,我们称之为“css样式”,为什么会说css+div呢?因为我上面说了div就是html主要用于布局的东西,所以div就是核心掌握的东西!那么css肯定必须要配合div来使用才好.css要熟练掌握float、position、width、height,以及对于的最大最小、会使用百分百、overflow、margin、padding等等,这些都是跟布局有关系的样式,一点要掌握。

       3、学习js。可能前两个大家觉得还过的去,看到js就傻眼了,其实吧,js入门很简单的,不需要会很多东西的,只要会根据某个id、或者name拿到网页dom或者样式、或者值,然后会给某个id或者name的元素标签赋值、或者追加数据、追html,这个是跟数据有关系的操作,然后数据逻辑判断,效果方面的,无非就是跳转、弹框、隐藏什么的,把这些全部结合其他就是实际用途了,代码一点都不难,会了这些基础js,其他的直接百度就好了.然后看多了,用多了,就什么都不是问题了。

       4、学习jquery。jquery是相当于把js封装了一套的一个js插件,目的就是操作起来更方便,代码写的更少,jquery入门也很简单,那些是入门需要学的和js一样,只是换成了jq的代码.其他的一样百度就够了。

       5、最好会点后台语言,比如java、php,为什么呢?因为前台界面的数据都是从后台来的,如果会点后台代码,就知道怎么跟后台交互数据是最好的,这样节约时间,也可以让前端代码更规范.不然可能因为你的写法和后端给来的数据不能结合上,那么前端代码又得重新写,那就更加麻烦了。

       6、学习css3+html5,可能这个对于更接手的新人来说有点困难,需要较强的代码知识与经验,但是如果你们是准备专门搞前端,那么最好还是学一下,这样对于将来的工作会有更大的帮助。

       ä¸ƒã€ä»Žäº‹Java后端开发都需要掌握哪些技能?

       å¯¹äºŽåˆå­¦Java并且有志于后端开发的同学来说,需要重点关注以下几个部分:

       1、基础:比如计算机系统、算法、编译原理等等

       2、Web开发:主要是Web开发相关的内容,包括HTML/CSS/js(前端页面)、Servlet/JSP(J2EE)以及MySQL(数据库)相关的知识。它们的学习顺序应该是从前到后,因此最先学习的应该是HTML/CSS/JS(前端页面)。还有一些前段框架比如easyui,还有js,jquery等技术。

       3、J2EE:你需要学习的是Servlet/JSP(J2EE)部分,这部分是Java后端开发必须非常精通的部分,因此这部分是这三部分中最需要花精力的。关于Servlet/Jsp部分视频的选择,业界比较认可马士兵的视频。4、数据库:你需要学会使用数据库,mysql是个不错的入门选择,而且Java领域里主流的关系型数据库就是mysql。这部分一般在你学习Servlet/Jsp的时候,就会接触到的,其中的JDBC部分就是数据库相关的部分。你不仅要学会使用JDBC操作数据库,还要学会使用数据库客户端工具,比如navicat,sqlyog,二选一即可。

       5、开发框架:目前比较主流的是SSM框架,即spring、springmvc、mybatis。你需要学会这三个框架的搭建,并用它们做出一个简单的增删改查的Web项目。你可以不理解那些配置都是什么含义,以及为什么要这么做,这些留着后面你去了解。但你一定要可以快速的利用它们三个搭建出一个Web框架,你在搭建SSM的过程中,可能会经常接触到一个叫maven的工具。这个工具也是你以后工作当中几乎是必须要使用的工具,所以你在搭建SSM的过程中,也可以顺便了解一下maven的知识。在你目前这个阶段,你只需要在网络上了解一下maven基本的使用方法即可,一些高端的用法随着你工作经验的增加,会逐渐接触到的。

       6、你需要去看一些JDK中的类的源码,也包括你所使用的框架的源码。这些源码能看懂的前提是,你必须对设计模式非常了解。否则的话,你看源码的过程中,永远会有这样那样的疑问,这段代码为什么要这么写?为什么要定义这个接口,它看起来好像很多余?由此也可以看出,这些学习的过程是环环相扣的,如果你任何一个阶段拉下来了,那么你就真的跟不上了,或者说是一步慢步步慢。总而言之,这个阶段,你需要做的是深入了解Java底层和Java类库(比如并发那本书就是Java并发包java.concurrent的内容),也就是JVM和JDK的相关内容。而且还要更深入的去了解你所使用的框架,方式比较推荐看源码或者看官方文档。

       å¸Œæœ›å¯¹æ‚¨æœ‰æ‰€å¸®åŠ©ï¼~

年,前端,移动开发,后端,我该选哪个?

       è¯·å…ˆç»™å‡ºæ˜Žç¡®ç­”复:推荐选前端开发,web前端可以说前途不可限量!

       è§£é‡ŠåŽŸå› ï¼š

       çŽ°åœ¨çš„Web前端技术可以说是越来越成熟了,Web前端市场也非常的火爆,Web前端人才也是异常的紧缺。再者,由于互联网的崛起,Web前端技术的不断发展,也占据了互联网的一席之地。

       é‚£ä¸ºä»€ä¹ˆè¯´Web前端无可限量呢?国外著名的自媒体平台facebook,相信大家多多少少知道一点,也用过一点,它就是Web前端技术的产物,完全基于前端框架打造出来的平台。再者,大家常用的外卖平台饿了么,它旗下的部分产品就是基于Web前端技术的。像淘宝,百度,阿里等等,都已经将Web前端技术打入到了自己的产品中。

       å‰ç«¯å¼€å‘行业薪资水平呈上涨趋势,Web前端开发早已不是做带动画的下拉菜单的时代了,他们已成为互联网主宰者,各行业都用其开发互联网应用。但目前整互联网行业的Web前端开发工程师紧俏,企业正高薪求才,薪资待遇一涨再涨!

       Web前端技术可以说是越来越成熟了,Web前端市场也非常的火爆,Web前端人才也是异常的紧缺。再者,Web前端行业也是无可限量。由于互联网的崛起,Web前端技术的不断发展,也占据了互联网的一席之地。

       Web前端开发工程师已经成为发展中的职业香馍馍。几乎整个互联网行业都缺Web前端工程师,无论是刚起步的创业公司,还是上市公司乃至巨头,空缺一样存在。优秀的Web前端工程师简直比大熊猫还稀少。

       æœ‰æ— è§£å†³åŠžæ³•ï¼šæ‰€ä»¥ï¼Œè¿˜æ˜¯å¾ˆæŽ¨èä½ å­¦ä¹ web前端的;如果真的想学习,可以了解一下北京尚学堂,我们是专门做编程培训的,拥有极其丰厚的师资力量,带给你不一样的学习体验。分享一下前端的知识框架,希望对你有所帮助:

如何开发一个 AVPlayer iPad 程序

       AirPlay 并不是新东西,它在 iOS 4.3 SDK 中就存在了。但AirPlay API 中不断有新的东西加入。其中一个有趣新特性是 iPad 程序能通过 Apple TV 2 播放来自 iOS 设备上的内容,或者镜像iPad 2 上的屏幕内容。

       ç®€è€Œè¨€ä¹‹ï¼ŒAirPlay 就是将媒体内容投放到高清显示器(电视)或高清音效系统上。Apple TV 2 则是用于连接 iOS 设备或 iTunes与高清设备之间的桥梁。

       éšç€ iOS 5 的出现,任何使用 AV Foundation 类的程序都能从程序中投放音视频内容到 Apple TV。你可以用MPMoviewPlayerController 通过 AirPlay 将当前正在播放的内容投影到高清电视或其它高清显示设备上。另一个进步是从UIWebView 投放视频,这是激动人心的改进,因为这意味着我们可以直接从 web 上将在线的音视频投影到电视或者 Apple TV 2 上。

       ä½¿ç”¨ AVFoundation 投影视频内容

       è¦åœ¨åº”用程序中使用 AVFoundation,需要实现 AVPlayer 并设置 allowsAirPlayVideo 为 YES 以开启 AirPlay,或者设置为NO 以关闭 AirPlay,如以下代码所示:

       -(BOOL)setAirPlay:(BOOL)airplayMode{

        return self.player.allowsAirPlayVideo=airplayMode;

       }

       ç¼–写应用程序

       ä¸ºäº†æ¼”示如何创建 AVPlayer 应用程序以及实现 AirPlay,我们将创建一个 Single View Application(注意勾选 UseStoryboards),新建一个 AVPlayer 类并实现 AirPlay 特性。

        创建一个 Single View Application。目标类型可以选择 iPhone、iPod 或者 iPad。创建项目之后,再导入 AV Foundation 框架。

       æŽ¥ç€åˆ›å»ºä¸€ä¸ªæ–° class,命名为 Player,并继承 UIView 类。在头文件中,加入 AVPlayer 类并增加一个 AVPlayer 属性。如下列代码所示。

       @class AVPlayer;

       @interface Player : UIView

       @property(nonatomic, strong) AVPlayer * player;

       æŽ¥ä¸‹æ¥å°±æ˜¯å®žçŽ° Player 类。

       æˆ‘们实现了最基本的 AVPlayer 需要实现的最起码的 4 个方法,同时还提供了一个方法作为我们的 AirPlay 开关。

       é¦–先我们需要一个 AVLayer 类的包装类。该类是一个 CALayer 子类,用于对媒体的可视内容进行管理。创建包装类的代码如下:

       + (Class)layerClass {

        return [AVPlayerLayer class];

       }

       ç„¶åŽä¸ºéœ€è¦ä¸€ä¸ªæ–¹æ³•ï¼Œå®žä¾‹åŒ–一个 AVPlayer 对象(我们在头文件中定义的)。如下列代码所示。

       -(AVPlayer *) player{

        return [(AVPlayerLayer *)[self layer] player];

       }

       åœ¨ setPlayer 方法中,如下列代码所示,有一个 AVPlayer 参数,用于将一个 AVPlayer 实例添加到 UIView。这个 UIView 子类,将用在主 View Controller 中。

       - (void)setPlayer:(AVPlayer*)player {

        [(AVPlayerLayer*)[self layer] setPlayer:player];

       }

       è¿™ä¸ªç±»çš„最后一个方法是 setAirPlay 方法。其参数将用于指定 AVPlayer UIView (Player)的allowsAirPlayVideo 属性。如以下代码所示。

       -(BOOL)setAirPlay:(BOOL)airplayMode{

        return self.player.allowsAirPlayVideo=airplayMode;

       }

       ä¸ºè§†é¢‘的输出指定图层(AVPLayerLayer)时,可以指定任意数量的图层,只要能方便控制内容显示。比如说处理音频和视频之间的时间同步。通过setDisplayMode,你可以设置用于显示的图层,先创建一个 AVPlayerLayer 对象作为显示图层,然后修改它的属性。默认是AVLayerVideoGravityResizeAspect 属性,另外也可以设置 AVLayerVideoGravityResizeAspectFill 属性和AVLayerVideoGravityResize 属性。 AVLayerVideoGravityResizeAspect 保持视频的宽高比并使播放内容自动适应播放窗口的大小。AVLayerVideoGravityResizeAspectFill 和前者类似,但它是以播放内容填充而不是适应播放窗口的大小。最后一个值会拉伸播放内容以适应播放窗口。

       Player 类的完整代码如下:

       #import <UIKit/UIKit.h>

       #import <AVFoundation/AVFoundation.h>

       @class AVPlayer;

       @interface Player : UIView

       @property(nonatomic, strong) AVPlayer * player;

       -(BOOL) setAirPlay:(BOOL) airplayMode;

       @end

       #import "Player.h"

       #import <AVFoundation/AVFoundation.h>

       @implementation Player

       + (Class)layerClass {

        return [AVPlayerLayer class];

       }

       -(AVPlayer *) player{

        return [(AVPlayerLayer *)[self layer] player];

       }

       - (void)setPlayer:(AVPlayer*)player {

        [(AVPlayerLayer*)[self layer] setPlayer:player];

       }

       //Enable or disable AirPlay mode

       -(BOOL)setAirPlay:(BOOL)airplayMode{

        return self.player.allowsAirPlayVideo=airplayMode;

       }

       @end

       åœ¨ç¨‹åºä¸­ä½¿ç”¨ Player (UIView子类)

       ä¸Šè¿°ä»£ç åŒ…括了Player (AVPlayer 的 UIView 子类)的.h文件和.m 文件。

       è¦åœ¨ä¸€ä¸ª UIViewController 中使用这个 AVPlayer 视图,打开 Xcode 的故事板(storyboard,前提是创建项目时使用了“useStoryboard”选项)。选中UIView(不是 UIViewController)并将它的类修改为 Player。你可以在 Identity 面板的 customeclass 字段输入,也可以从它的下拉列表中选择。

       æ‰“å¼€ Assistant Editor ,为 UIView 子类 Player 创建一个 IBOutlet,从 view 用右键拖到右边的头文件中即可。如下图所示。

       åˆ›å»ºIBActions 和 IBOutlets 连接

       åˆ›å»ºä¸€ä¸ªå§”托到 klViewController 。在 Player 上右键,从 IBOutlet 拖一个连接线到 klViewController (dock 上的黄色方块) ,如下图所示。

       æ·»åŠ å§”托连接 klViewController

       åœ¨æ•…事版中,加一个 Toolbar 。在 Toolbar 是加入两个按钮,分别将标签文本设置为 Play 和 Pause。然后加一个 Switch,用于切换AirPlay 开关状态。为这 3 个控件创建相应的 IBAction(可以用 Assistant Editor)。剩下的事情在 klViewController 类中进行。

       æ‰“å¼€ klViewController.h 文件,加入 @class Player 和 @class AVPlayer 语句并导入 AVFoundation 框架和 Player.h。源代码见下:

       #import <UIKit/UIKit.h>

       #import <AVFoundation/AVFoundation.h>

       #import "Player.h"

       @class Player;

       @class AVPlayer;

       @interface klViewController : UIViewController

       å£°æ˜Žä¸€ä¸ª AVPlayer 属性,用于加载到 Palyer 视图中。

       å£°æ˜Žä¸€ä¸ª NSURL 属性。然后是 Switch 控件的 IBOutlet(用 Assistant Editor创建)。

       kvLiewController.h 文件代码如下:

       #import <UIKit/UIKit.h>

       #import <AVFoundation/AVFoundation.h>

       #import Player.h

       @class Player;

       @class AVPlayer;

       @interface klViewController : UIViewController

       @property(nonatomic, strong) AVPlayer * myPlayer;

       @property(nonatomic, strong) NSURL * avContentUrl;

       @property (strong, nonatomic) IBOutlet Player *airPlayView;

       @property (nonatomic, retain) IBOutlet UISwitch * AirPlaySwitch;

       - (IBAction)PlayVideo:(id)sender;

       - (IBAction)PauseVideo:(id)sender;

       - (IBAction)isAirPlayOn:(id)sender;

       @end

       æŽ¥ä¸‹æ¥æ˜¯ç±»çš„实现文件。在 viewDidLoad 方法中,用一个视频文件的 URL 地址初始化 avContentUrl:

       avContentUrl = [[NSURL alloc] initWithString

       ç„¶åŽç”¨ avContentUrl 初始化一个 AVPlayer ,用于给头文件中定义的 myPlayer 属性赋值。将 myPlayer 赋给 airPlayView 的 player 属性,airPlayerView 是一个 Player 对象。如下列代码所示:

       self.myPlayer = [AVPlayer playerWithURL:avContentUrl];

       [airPlayView setPlayer:[self myPlayer]];

       çŽ°åœ¨ï¼Œè¦å®žçŽ°ä¸¤ä¸ªæŒ‰é’®çš„视频播放和暂停功能,以及 Switch 控件的 AirPlay 开关功能。播放按钮的 action 方法代码如下所示:

       - (IBAction)PlayVideo:(id)sender {

        [self.myPlayer play];

       }

       æš‚停按钮的 action 方法代码如下所示:

       - (IBAction)PauseVideo:(id)sender {

        [self.myPlayer pause];

       }

       Switch 控件的 action 方法代码如下所示:

       - (IBAction)isAirPlayOn:(id)sender {

        AirPlaySwitch = (UISwitch *) sender;

        if (AirPlaySwitch.on) {

        [airPlayView setAirPlay:NO];

        }else

        {

        [airPlayView setAirPlay:YES];

        }

       }

       ç»“å°¾

       å¦ä¸€ä¸ªä¸Ž AirPlay 有关的属性是 usesAirPlayVideoWhileAirPlayScreenIsActive ,它用于自动在在播放期间将 AVPlayer 切换到 AirPlay,当然仅仅是在 AirPlay 已开启的情况下。默认是 false 的。

       è¦è¿è¡Œæœ¬ç¤ºä¾‹ç¨‹åºï¼Œéœ€è¦åœ¨ iPad 上进行,并将 iPad 连接至 Apple TV 同一 wifi 网络,然后视频资源的 URL 必须是有效的。在模拟器中AirPlay 是无效的。

       klViewController.h 文件

       #import <UIKit/UIKit.h>

       #import <AVFoundation/AVFoundation.h>

       #import "Player.h"

       @class Player;

       @class AVPlayer;

       @interface klViewController : UIViewController

       @property(nonatomic, strong) AVPlayer * myPlayer;

       @property(nonatomic, strong) NSURL * avContentUrl;

       @property (strong, nonatomic) IBOutlet Player *airPlayView;

       @property (nonatomic, retain) IBOutlet UISwitch * AirPlaySwitch;

        - (IBAction)PlayVideo:(id)sender;

        - (IBAction)PauseVideo:(id)sender;

        - (IBAction)isAirPlayOn:(id)sender;

        @end

       klViewController.m 文件

       #import "klViewController.h"

        @implementation klViewController

       @synthesize airPlayView;

       @synthesize avContentUrl, myPlayer, AirPlaySwitch;

        - (void)didReceiveMemoryWarning

       {

        [super didReceiveMemoryWarning];

        // Release any cached data, images, etc that aren't in use.

       }

        #pragma mark - View lifecycle

        - (void)viewDidLoad

       {

        [super viewDidLoad];

        //This is an Apple sample video

        avContentUrl = [[NSURL alloc] initWithString:@" self.myPlayer = [AVPlayer playerWithURL:avContentUrl];

        [airPlayView setPlayer:[self myPlayer]];

        [self.myPlayer play];

       }

        - (void)viewDidUnload

       {

        [self setAirPlayView:nil];

        [super viewDidUnload];

        // Release any retained subviews of the main view.

        // e.g. self.myOutlet = nil;

       }

        - (void)viewWillAppear:(BOOL)animated

       {

        [super viewWillAppear:animated];

       }

        - (void)viewDidAppear:(BOOL)animated

       {

        [super viewDidAppear:animated];

       }

       - (void)viewWillDisappear:(BOOL)animated

       {

        [super viewWillDisappear:animated];

       }

        - (void)viewDidDisappear:(BOOL)animated

       {

        [super viewDidDisappear:animated];

       }

        - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

       {

        // Return YES for supported orientations

        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

       }

        - (IBAction)PlayVideo:(id)sender {

        [self.myPlayer play];

       }

       - (IBAction)PauseVideo:(id)sender {

        [self.myPlayer pause];

        }

        - (IBAction)isAirPlayOn:(id)sender {

        AirPlaySwitch = (UISwitch *) sender;

        if (AirPlaySwitch.on) {

        [airPlayView setAirPlay:NO];

        }else

        {

        [airPlayView setAirPlay:YES];

        }

       }

        @end