利用UIWebView打造一個炫酷的視頻背景視圖

注:使用GIF動態(tài)圖片只是一種可行的方式達(dá)到該效果,并非唯一解決方案斗躏。我個人更傾向于通過視頻播放器的方式來實現(xiàn)視頻背景效果柱告,然而通過GIF圖片仍然是一個可行的選項。實施步驟直接跳轉(zhuǎn)到下面的"工作前準(zhǔn)備"婆瓜。

如果你使用過iOS版本的Spotify 快集,你會注意到在這款應(yīng)用的新版本中,他們使用了一個播放的視頻作為app啟動的背景廉白。相對于靜態(tài)的圖片背景來說个初,這是一個相當(dāng)酷的設(shè)計。如果你還沒有見過這類設(shè)計猴蹂,可以瞄一下我做的最終結(jié)果:

僅僅為了讓你覺得有趣院溺,我在從柏林到格拉茨的火車上拍下了這個軌道的慢移視頻

于是我開始著手重新創(chuàng)建一個編程的實踐,來達(dá)到相同的效果磅轻。那么問題來了:怎樣實現(xiàn)珍逸?我首先想到的是,創(chuàng)建一個視頻播放器并且讓這個視頻文件在背景視圖上重復(fù)播放聋溜。但是我還要放其他控件到視圖上面谆膳,而且我也不需要視頻的聲音。

然后我想到了GIF文件〈樵辏現(xiàn)在的問題是:要怎么樣把一個GIF放到一個視圖上去漱病?據(jù)我所知,UIImageView和UIImage都不支持GIF動畫把曼。盡管UIImageView可以通過添加多張圖片和動畫結(jié)合的方式來實現(xiàn)缨称,我們真的需要從視頻中截取大量的圖片并把所有的這些圖片全都添加到工程中嗎?這樣制作視頻的工作準(zhǔn)備未免太復(fù)雜了祝迂。那還有什么支持GIF呢睦尽?答案是UIWebView。

工作前準(zhǔn)備:處理視頻

準(zhǔn)備一個你想作為背景播放的視頻型雳。有無數(shù)的軟件和網(wǎng)頁應(yīng)用可以用來把視頻轉(zhuǎn)換為GIF圖片当凡,如果你想得到最佳效果,需要把它們裁剪為iPhone的屏幕大小纠俭。

有一個非常好的指南來教你怎樣制作沿量,更多的資源你也可以從Google獲取。這里我用的是一個叫做 GIF Brewery的軟件冤荆。這個軟件也有一篇非常詳細(xì)的指南頁朴则,非常簡單易上手。

把GIF添加到工程中

跟添加其他文件一樣钓简,直接把GIF文件拖到你工程的導(dǎo)航目錄中乌妒。

開始編寫代碼

我會使用Objective-C和Swift來展示如何達(dá)到目的汹想。所有的代碼都寫在默認(rèn)加載的viewController中的viewDidLoad 里。

1.創(chuàng)建一個GIF的文件路徑撤蚊,用來讀取你添加的GIF文件古掏。

Objective-C:

1

2

3NSString?*filePath?=?[[NSBundle?mainBundle]?pathForResource:@”railway”?ofType:@”gif”];

NSData?*gif?=?[NSData?dataWithContentsOfFile:filePath];

Swift:

1

2

3let?filePath?=?NSBundle.mainBundle().pathForResource(“railway”,?ofType:?“gif”)

let?gif?=?NSData(contentsOfFile:?filePath!)

2. 創(chuàng)建一個UIWebView并且把GIF轉(zhuǎn)換成的NSData形式作為它的數(shù)據(jù)源。由于需要把它作為背景侦啸,因此frame尺寸應(yīng)該根據(jù)iPhone的屏幕尺寸設(shè)定槽唾。同時,UIWebView類似于scrollview光涂,你需要設(shè)置它的userInteractionEnabled 屬性設(shè)為NO庞萍。然后把UIWebView添加到主視圖上去。

Objective-C:

1

2

3

4

5

6

7UIWebView?*webViewBG?=?[[UIWebView?alloc]?initWithFrame:self.view.frame];

[webViewBG?loadData:gif?MIMEType:@”image/gif”?textEncodingName:nil?baseURL:nil];

webViewBG.userInteractionEnabled?=?NO;

[self.view?addSubview:webViewBG];

Swift:

1

2

3

4

5

6

7let?webViewBG?=?UIWebView(frame:?self.view.frame)

webViewBG.loadData(gif!,?MIMEType:?“image/gif”,?textEncodingName:?String(),?baseURL:?NSUrl())

webViewBG.userInteractionEnabled?=false;

self.view.addSubview(webViewBG)

3.可選:我還需要添加其他按鈕到背景上忘闻,因此我使用了另一個黑色的過濾視圖挂绰,alpha值設(shè)為0.05,覆蓋到UIWebView上服赎。這樣可以淡出背景視圖葵蒂,同時讓按鈕和按鈕的標(biāo)題更突出。

Objective-C:

1

2

3

4

5

6

7UIView?*filter?=?[[UIView?alloc]?initWithFrame:self.view.frame];

filter.backgroundColor?=?[UIColor?blackColor];

filter.alpha?=?0.05;

[self.view?addSubview:filter];

Swift:

1

2

3

4

5

6

7

8

9Let?filter?=?UIView()

filter.frame?=?self.view.frame

filter.backgroundColor?=?UIColor.blackColor()

filter.alpha?=?0.05

self.view.addSubview(filter)

4.添加其他你需要添加的重虑,完成践付!

總結(jié):

完整工程可以從我的GitHub下載和使用。示例中使用的GIF文件也在里面缺厉。以上可能并非最好的解決方式永高,歡迎共同探討。

這是我博客的第一篇文章提针,很高興能夠開始寫博客了命爬。我會繼續(xù)分享一些日常中創(chuàng)新性和值得分享的設(shè)計和編程技巧。歡迎在Medium 和Twitter上關(guān)注我辐脖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饲宛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嗜价,更是在濱河造成了極大的恐慌艇抠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件久锥,死亡現(xiàn)場離奇詭異家淤,居然都是意外死亡,警方通過查閱死者的電腦和手機瑟由,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門絮重,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事青伤《搅” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵潮模,是天一觀的道長。 經(jīng)常有香客問我痴施,道長擎厢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任辣吃,我火速辦了婚禮动遭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘神得。我一直安慰自己厘惦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布哩簿。 她就那樣靜靜地躺著宵蕉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪节榜。 梳的紋絲不亂的頭發(fā)上羡玛,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音宗苍,去河邊找鬼稼稿。 笑死,一個胖子當(dāng)著我的面吹牛讳窟,可吹牛的內(nèi)容都是我干的让歼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼丽啡,長吁一口氣:“原來是場噩夢啊……” “哼谋右!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起补箍,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤倚评,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后馏予,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體天梧,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年霞丧,在試婚紗的時候發(fā)現(xiàn)自己被綠了呢岗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖后豫,靈堂內(nèi)的尸體忽然破棺而出悉尾,到底是詐尸還是另有隱情,我是刑警寧澤挫酿,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布构眯,位于F島的核電站,受9級特大地震影響早龟,放射性物質(zhì)發(fā)生泄漏惫霸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一葱弟、第九天 我趴在偏房一處隱蔽的房頂上張望壹店。 院中可真熱鬧,春花似錦芝加、人聲如沸硅卢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽将塑。三九已至,卻和暖如春蝌麸,著一層夾襖步出監(jiān)牢的瞬間抬旺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工祥楣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留开财,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓误褪,卻偏偏與公主長得像责鳍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兽间,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本文由CocoaChina譯者Leo008(論壇ID)翻譯 原文:iOS: Make an Awesome Vid...
    像羽毛那樣輕閱讀 723評論 0 5
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫历葛、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 何為禪宗?何為佛道帜羊?凡人大多一“善”以蔽之咒程。通禪者絕非善類,必定是摒棄了親善憐憫之心讼育,“橫眉冷對千夫指”帐姻!有人要問...
    劉小銘閱讀 2,322評論 5 2
  • 現(xiàn)在的中國饥瓷,社會發(fā)展迅速剥纷,公司每年成立很多、上市很多呢铆、倒閉很多晦鞋,員工工作更換已經(jīng)是常態(tài),十幾年沒換過工作的反而成為...
    匠心writting閱讀 610評論 2 4
  • 第一部分 前述 很早就想要讀這本書了棺克,無奈給自己拉的書單太長悠垛,實在沒有時間細(xì)讀,所以只好拿出半天時間逆航,其實只能算是...
    nanjie閱讀 509評論 0 2