最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS AVPlayer切換播放源實現(xiàn)連續(xù)播放和全屏切換的方法

 更新時間:2017年05月27日 11:54:53   作者:雪_晟  
這篇文章主要給大家介紹了關(guān)于iOS中AVPlayer切換播放源實現(xiàn)連續(xù)播放和全屏切換的方法,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。

本文主要給大家介紹了關(guān)于iOS AVPlayer切換播放源實現(xiàn)連續(xù)播放和全屏切換的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面來一起看看詳細的介紹:

AVPlayer 切換播放源有三種方式:

第一種:采用系統(tǒng)自帶的方法: [self.player replaceCurrentItemWithPlayerItem:item] ,但是在切換playItem前要把所有的通知,觀察者移除,切換后重新添加。

第二種:把通知,觀察者全部移除,player 置為nil,然后重新創(chuàng)建。

githup上ZFPlayer 作者表示在iOS9后,AVPlayer的replaceCurrentItemWithPlayerItem方法在切換視頻時底層會調(diào)用信號量等待然后導(dǎo)致當前線程卡頓,如果在UITableViewCell中切換視頻播放使用這個方法,會導(dǎo)致當前線程凍結(jié)幾秒鐘。遇到這個坑還真不好在系統(tǒng)層面對它做什么,后來找到的解決方法是在每次需要切換視頻時,需重新創(chuàng)建AVPlayer和AVPlayerItem。

因為視頻較小,所以我沒有測試,這兩種方法暫時都可以使用。

第三種可以使用AVQueuePlayer播放多個items,AVQueuePlayer是AVPlayer的子類,可以用一個數(shù)組來初始化一個AVQueuePlayer對象。

代碼如下:

NSArray*items = <#An array of player items#>;AVQueuePlayer*queuePlayer = [[AVQueuePlayeralloc] initWithItems:items];

和AVPlayer一樣,直接調(diào)用play方法來播放,queue player順序播放隊列中的item,如果想要跳過一個item,播放下一個item,可以調(diào)用方法advanceToNextItem。

可以對隊列進行插入和刪除操作,調(diào)用方法insertItem:afterItem: , removeItem: , 和removeAllItems。正常情況下當插入一個item之前,應(yīng)該檢查是否可以插入,通過使用canInsertItem:afterItem:方法,第二個參數(shù)傳nil

親測第一種第二種沒有問題,第三種當然也可以實現(xiàn)連續(xù)播放,后續(xù)再研究。

看到ZFPlayer 的流暢性,就又使用了ZFPlayer作者使用的通知重新簡單封了一遍,連播代碼。


連播 的邏輯無非就是重置Layer 和子控件位置,然后重新設(shè)置一遍。

關(guān)于橫豎屏切換的代碼:


沒有做封裝,可以封裝個方法,傳入當前的oriention,然后很霸道的實現(xiàn)橫豎屏切換,demo 是用純代碼寫的,還用了懶加載,這在橫豎屏切換的時候有很大的弊端,因為懶加載的緣故,frame已經(jīng)確定,切換橫豎屏的時候不得已在layoutSubviews里把布局代碼重新寫一遍,這時候就是Masonry 布局的好處了。(Masonry 要更新到最新,要不然iOS10 會崩潰,莫名其妙),還有就是返回的時候要再次調(diào)用這個方法設(shè)置為豎屏。實現(xiàn)橫豎屏的前提是當前ViewController的- (UIInterfaceOrientationMask)supportedInterfaceOrientations 必須支持橫豎屏。

如果不想強制橫屏,只是在用戶旋轉(zhuǎn)手機的時候,更換布局,也可以使用下面的通知。


還有個問題是循環(huán)引用的問題:當我們聲明一個非屬性的實例變量時,在自己寫的block里會造成循環(huán)引用,導(dǎo)致當前view無法釋放。

demo

地址:LXAVPlayerDemo

本地下載:http://xiazai.jb51.net/201705/yuanma/LXAVPlayerDemo(jb51.net).rar

總結(jié)

以上就是這篇文章的全部內(nèi)容了,新人一枚,沒有做良好的封裝,只是研究了一些思路。希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • iOS開發(fā)UI篇—xib的簡單使用實例

    iOS開發(fā)UI篇—xib的簡單使用實例

    本篇文章主要介紹了iOS開發(fā)UI篇—xib的簡單使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • IOS 的彈性滾動解決方案

    IOS 的彈性滾動解決方案

    所謂彈性滾動就是指在翻動長頁面手指離開時,由慢到塊,由快到慢的過度。這篇文章主要介紹了IOS 的彈性滾動解決方案,需要的朋友可以參考下
    2016-10-10
  • iOS xib文件中添加ScrollView約束的方法

    iOS xib文件中添加ScrollView約束的方法

    下面小編就為大家分享一篇iOS xib文件中添加ScrollView約束的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS貝塞爾曲線畫哆啦A夢的代碼實例

    iOS貝塞爾曲線畫哆啦A夢的代碼實例

    本篇文章主要介紹了iOS貝塞爾曲線畫哆啦A夢的代碼實例,這里整理了詳細的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • iOS實現(xiàn)支持小數(shù)的星星評分組件實例代碼

    iOS實現(xiàn)支持小數(shù)的星星評分組件實例代碼

    程序中需要打分的功能,在網(wǎng)上找了幾個,都不是很滿意。所以自己動手實現(xiàn)了一個,下面這篇文章主要給大家介紹了關(guān)于利用iOS實現(xiàn)支持小數(shù)的星星評分組件的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • IOS 開發(fā)之讀取addressbook的實現(xiàn)實例

    IOS 開發(fā)之讀取addressbook的實現(xiàn)實例

    這篇文章主要介紹了IOS 開發(fā)之讀取addressbook的實現(xiàn)實例的相關(guān)資料,希望通過本文大家能夠掌握這樣的內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • iOS實現(xiàn)波浪效果

    iOS實現(xiàn)波浪效果

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)波浪效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • iOS中利用inputView 彈出 picker

    iOS中利用inputView 彈出 picker

    這篇文章主要介紹了iOS中利用inputView 彈出 picker的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 使用SDLocalize實現(xiàn)高效完成iOS多語言工作

    使用SDLocalize實現(xiàn)高效完成iOS多語言工作

    這篇文章主要介紹了使用SDLocalize實現(xiàn)高效完成iOS多語言工作的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • iOS實現(xiàn)容器視圖控制器的方法

    iOS實現(xiàn)容器視圖控制器的方法

    本篇文章給大家詳細講述了iOS實現(xiàn)容器視圖控制器的方法,對此感興趣的朋友可以測試學(xué)習(xí)下。
    2018-02-02

最新評論

黄浦区| 应城市| 黑山县| 本溪市| 剑阁县| 丘北县| 嘉黎县| 阿坝| 霸州市| 武夷山市| 尼玛县| 塔城市| 西城区| 建水县| 西林县| 都昌县| 工布江达县| 大姚县| 隆昌县| 怀远县| 池州市| 万全县| 腾冲县| 漳平市| 湟源县| 郧西县| 金寨县| 沙田区| 仙桃市| 凉山| 桂阳县| 西乌珠穆沁旗| 田东县| 大安市| 百色市| 大连市| 团风县| 三江| 南平市| 镇远县| 启东市|