操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    者按:本文作者劉超在2012年加入墨跡天氣,主要負(fù)責(zé)iOS平臺(tái)軟件開發(fā)工作。在今年年初,墨跡天氣團(tuán)隊(duì)針對Apple Watch的硬件與交互特點(diǎn),對應(yīng)用做了重新設(shè)計(jì)與開發(fā)。作者從軟件開發(fā)角度,分享了墨跡天氣團(tuán)隊(duì)在開發(fā)過程中發(fā)現(xiàn)的問題、誤區(qū),以及解決之道。


    Apple Watch的設(shè)計(jì)誤區(qū)

    WatchKit發(fā)布第一時(shí)間,我們的產(chǎn)品經(jīng)理和設(shè)計(jì)師就根據(jù)設(shè)計(jì)規(guī)范和官方宣傳動(dòng)畫迅速出了一版設(shè)計(jì)原型。Apple Watch版應(yīng)用中囊括墨跡天氣iPhone版的大部分功能,從實(shí)況到預(yù)報(bào),再到時(shí)景和分享,其中包括一些新的交互,如使用Digital Crown切換短時(shí)和多天預(yù)報(bào)、縮放時(shí)景圖片,在消息推送達(dá)到后直接在該推送下編輯信息回復(fù)。它相當(dāng)于一個(gè)微縮版本的墨跡天氣。

    隨后程序員也很快加入到這個(gè)項(xiàng)目里。當(dāng)我們研究過Programming Guide和Watchkit framework Reference后,失望的發(fā)現(xiàn)宣傳視頻上展示的操作:Digital Crown、表面觸感、地圖縮放等是不對開發(fā)者開放的。于是我們開始重新推敲交互,設(shè)計(jì)師也發(fā)現(xiàn)不能再像設(shè)計(jì)iPhone應(yīng)用那樣自由的設(shè)計(jì)細(xì)節(jié)。由于最初我們都是沒有實(shí)際的佩戴體驗(yàn)的,只能從宣傳片和設(shè)計(jì)開發(fā)指南中找思路,揣摩用戶的使用場景和心理。通過和Apple方面有佩戴經(jīng)驗(yàn)的負(fù)責(zé)人交流,我們發(fā)現(xiàn)最開始的設(shè)計(jì)方向是不對的,我們不應(yīng)該把設(shè)計(jì)重心Apple Watch的主程序上,而是重點(diǎn)設(shè)計(jì)Glance和Notification。作為一款手表上的應(yīng)用程序,及時(shí)方便地查看才是它最常見的應(yīng)用場景。曾經(jīng)看到一位沒有使用過Apple Watch的網(wǎng)友調(diào)侃:在那么小的屏幕上操作帶來的麻煩完全抵消了從兜里掏出手機(jī)的麻煩。


    Watch應(yīng)用開發(fā)的五條小技巧

    WatchKit提供的是一套全新的界面類。令人熟悉的地方是,大多數(shù)方法和屬性的命名都有很好的延續(xù)性,幾乎不需要重新學(xué)習(xí)就能夠大概看出其含義。不同的是所有的界面控件都繼承自  WKInterfaceObject,也就是說這些界面控件不再是繼承自UIView的控件實(shí)體,而更像是控制真正界面的代理控制器。

    在進(jìn)行開發(fā)之前,我們要先了解一下Watchkit是如何工作的。實(shí)際上一個(gè)Watch應(yīng)用分為兩部分,負(fù)責(zé)界面的WatchKit App,只包括storyboard和asset catalog,它運(yùn)行于Apple Watch上,另一個(gè)是負(fù)責(zé)邏輯部分的WatchKit Extension,則運(yùn)行于iPhone上。開發(fā)者可能會(huì)擔(dān)心,這樣會(huì)不會(huì)加大開發(fā)的難度呢?答案是完全不會(huì)!Apple Watch和iPhone使用Bluetooth LE 和 Wi-Fi 技術(shù)進(jìn)行通信,整個(gè)通信過程實(shí)在后臺(tái)完全自動(dòng)進(jìn)行的,所以即使界面和交互在Apple Watch上,邏輯在iPhone上,我們卻根本不需要操心,只要像常規(guī)那樣處理界面屬性賦值和交互響應(yīng)即可,確實(shí)很酷!

    首先是界面開發(fā),在使用WatchKit開發(fā)時(shí),不會(huì)再出現(xiàn)“代碼寫UI還是Xib寫?”這樣的帶有爭議的問題,因?yàn)閃atch應(yīng)用只能用StoryBoard進(jìn)行開發(fā),我猜想是為了更好的控制Watch應(yīng)用的界面一致性,除此之外還有比較多限制。譬如不能在運(yùn)行時(shí)動(dòng)態(tài)增減界面元素,只能通過設(shè)置隱藏屬性來調(diào)整界面展示;元素之間不能出現(xiàn)疊加,只能按縱向橫向依次排列; Glance必須從官方模版中選擇一個(gè)來使用,不能自由堆砌界面元素等等。不過最終開發(fā)下來,發(fā)現(xiàn)只要運(yùn)用得當(dāng),空間還是很大的,在此我們根據(jù)實(shí)踐總結(jié)了一些小技巧:

    1. 使用 WKInterfaceGroup、WKInterfaceButton的- setBackgroundImageNamed:和- startAnimatingWithImagesInRange:duration:repeatCount:方法在背景上增加圖片或者動(dòng)畫,這樣就可以使控件和圖形實(shí)現(xiàn)疊加。有些小伙伴可能會(huì)覺得很驚奇,“什么?WKInterfaceButton也可以作為容器放置控件?”是的,只要在控件的Attributes inspector里把Button的Content屬性由Text修改為Group即可,這樣我們就可以像使用Group一樣使用button了。

    2. 抬手即看的短暫應(yīng)用場景要求我們必須開發(fā)出層次簡潔、操作流暢的應(yīng)用,過程中我們發(fā)現(xiàn)WKInterfaceMenu的使用效果非常生硬,實(shí)際操作時(shí)需要長按才會(huì)響應(yīng),另外當(dāng)彈出的選項(xiàng)偏少時(shí),界面并不美觀,所以后來用WKInterfaceButton的輕點(diǎn)事件取代了這種長按操作。

    3. 在控件的Attributes inspector里,可以針對38mm和42mm的Apple Watch分別設(shè)置屬性。

    4. 如果想讓一組橫向放置的N個(gè)控件等寬,可又因?yàn)椴恢涝O(shè)備類型而不能設(shè)置具體的寬度,該怎么辦呢? 一種比較土的辦法是,在程序運(yùn)行后,通過獲取屏幕寬度來動(dòng)態(tài)的設(shè)置控件寬度。另一種方法是直接在該控件的屬性設(shè)置里把寬度設(shè)置為Reletive to Container,然后在其下方的輸入框內(nèi)填寫所占比例,例如5等份,就填寫0.2,這樣系統(tǒng)會(huì)按照你的設(shè)置自動(dòng)幫你設(shè)置好。

    5. 在傳統(tǒng)的基于界面的iOS應(yīng)用中,程序可以在AppDelegate里做好界面展示的準(zhǔn)備工作,但是Watch應(yīng)用必須直接指定某個(gè)界面為入口。如果你的根界面是一個(gè)基于分頁的結(jié)構(gòu)(page-based), 可能會(huì)碰到這樣的問題:程序在啟動(dòng)后才動(dòng)態(tài)的決定分頁數(shù),所以需要在頁面內(nèi)調(diào)用reloadRootControllersWithNames來重新加載,如果加載的頁面中不僅包括加載者自身又沒有做處理的話,就會(huì)無限加載下去,這時(shí)候你可以使用一個(gè)static變量來解決無限r(nóng)eload的問題,如下:

    - (void)awakeWithContext:(id)context {<br>&nbsp; [super
    awakeWithContext:context];<br>&nbsp; static BOOL bReload = NO;<br>&nbsp; if (!bReload) {<br>&nbsp; bReload = YES;<br>&nbsp; //計(jì)算分頁數(shù),準(zhǔn)備各分頁context數(shù)據(jù)<br>&nbsp; //調(diào)用[WKInterfaceController
    reloadRootControllersWithNames: contexts:]加載分頁<br>&nbsp; }<br>&nbsp; else {<br>&nbsp; //處理輸入的context,這里不加載界面,willActivate執(zhí)行時(shí)再lazy加載<br>&nbsp; }<br>}

    當(dāng)用戶抬起手腕打開Glance想看一下天氣時(shí),如果程序此時(shí)才去進(jìn)行數(shù)據(jù)請求,用戶就會(huì)面對一個(gè)大大的N/A界面,需要等上1~2秒,直到網(wǎng)絡(luò)請求成功,才會(huì)顯示最新的天氣信息。這會(huì)帶來較差的使用體驗(yàn)。相對來說,我認(rèn)為比較好的做法是,先讓iPhone應(yīng)用支持后臺(tái)刷新的系列功能,包括:silent notification、background fetch。如此一來,當(dāng)用戶查看Glance時(shí),呈現(xiàn)給他的是近期更新過的數(shù)據(jù),隨后程序做出判斷,如果這個(gè)還需要呈現(xiàn)給用戶更新的數(shù)據(jù)就立即進(jìn)行網(wǎng)絡(luò)請求,請求成功后再更新界面。


    數(shù)據(jù)共享與通信

    Watch應(yīng)用和containing iOS App之間可以通過共享數(shù)據(jù)區(qū)進(jìn)行數(shù)據(jù)共享。首先啟用App Groups,然后在共享容器內(nèi)根據(jù)要共享數(shù)據(jù)的性質(zhì)來決定是用NSUserDefaults還是直接在共享區(qū)讀寫文件。官方Demo推薦用NSFileCoordinator來進(jìn)行文件讀寫,以完成多進(jìn)程間的同步。不過,我自己在實(shí)踐過程中發(fā)現(xiàn),使用NSFileCoordinator時(shí)必須特別小心,使用不當(dāng)會(huì)造成因資源引起的死鎖。當(dāng)時(shí)情況是這樣的:程序上的一個(gè)bug導(dǎo)致在個(gè)別情況下會(huì)出現(xiàn)特別頻繁的IO,以致程序幾乎失去了響應(yīng)。這時(shí)候如果直接將程序kill掉,資源所在目錄有幾率發(fā)生死鎖,如果重啟App,程序會(huì)卡死在NSFileCoordinator的coordinateReadingItemAtURL方法上。該方法的回調(diào)block長時(shí)間得不到執(zhí)行,以致于iOS的”看門狗”會(huì)直接將App干掉,啟動(dòng)不起來,只能依靠重啟系統(tǒng)來解決。對App開發(fā)者來說簡直是“人間慘劇”,這種情況下沒有幾個(gè)用戶會(huì)不刪掉App的。

    由于atch應(yīng)用只有運(yùn)行、掛起、終止三種狀態(tài),所以一旦你正在使用NSFileCoordinator寫文件時(shí)被掛起,它就沒有機(jī)會(huì)讓出資源所有權(quán)。要解決這個(gè)問題,需要使用原子安全的保存操作,如UIDocument。

    如果你需要Watch應(yīng)用同containing iOS app進(jìn)行通信,可以使用WKInterfaceController類的類方法openParentApplication,反過來如果需要containing iOS app同watch app通信,一種辦法是通過在數(shù)據(jù)共享區(qū)讀寫文件,然后讓watch app監(jiān)聽該文件從而做出響應(yīng);另一種方法,是使用Darwin Notification Center,具體開發(fā)過程,可以參照  官方的建議。


    性能方面

    關(guān)于這一點(diǎn),官方給予的建議非常明確,簡要列舉如下:

    1. 盡可能減少iPhone和Apple Watch之間的數(shù)據(jù)通信,比如盡可能把圖片存在WatchKit app bundle里,這樣顯示圖片的時(shí)候會(huì)更快更省電。

    2. 僅更新界面上改變的部分,比如需要對 table新增了一行數(shù)據(jù),不要重新加載整個(gè)table。

    3. 減少分頁結(jié)構(gòu)應(yīng)用的加載時(shí)間,在init和awakeWithContext做盡可能少的處理,界面如何展示的問題放在WillActivate內(nèi)處理。

    4. 讓一個(gè)Controller負(fù)責(zé)盡可能少的場景,因?yàn)楫?dāng)顯示其中一個(gè)場景時(shí)必須要隱藏不需要的控件,但是隱藏控件也會(huì)被創(chuàng)建,就會(huì)影響加載速度。

    其它Tips:

    官方論壇的Apple Watch模塊里有很多有價(jià)值的問答,蘋果的工程師會(huì)在里面對開發(fā)者的疑問進(jìn)行解答。推薦下載官方Demo Lister,這是一個(gè)非常不錯(cuò)的開發(fā)示例。但是要注意,Demo里大量使用iOS 8及其以上的API,如果你的App還需要支持iOS 8以下的系統(tǒng),在Copy代碼時(shí)請做好兼容。

    XCode 6.2版本有一個(gè)小bug,就是必須把相關(guān)target的Bundle Display Name 和 Bundle Name都配置為我們的應(yīng)用名,才會(huì)在Watch應(yīng)用啟動(dòng)和iPhone上Apple Watch的配對程序里正確的顯示應(yīng)用名稱。

    另外,還要給使用XCode6.2的開發(fā)者提個(gè)醒,不正確的現(xiàn)實(shí)應(yīng)用名稱有可能會(huì)被審核拒絕。需要支持國際化的開發(fā)者要針對所支持語言在infoPlist.strings內(nèi)配置CFBundleName的值即可。


    寫在最后

    根據(jù)Apple在iOS系統(tǒng)上日益開放的策略,我們有理由相信,隨著時(shí)間的推移WatchKit會(huì)開放給開發(fā)者越來越多的API。各種App也會(huì)更準(zhǔn)確的捕捉到Apple Watch的應(yīng)用場景,開發(fā)者也會(huì)有更大的舞臺(tái)去發(fā)揮!

    作者簡介:劉超,2012年加入墨跡天氣,主要負(fù)責(zé)iOS平臺(tái)軟件開發(fā)工作。歡迎感興趣的中高級iOS工程師交流。chao.liu#moji.com

    CSDN移動(dòng)將持續(xù)為您優(yōu)選移動(dòng)開發(fā)的精華內(nèi)容,共同探討移動(dòng)開發(fā)的技術(shù)熱點(diǎn)話題,涵蓋移動(dòng)應(yīng)用、開發(fā)工具、移動(dòng)游戲及引擎、智能硬件、物聯(lián)網(wǎng)等方方面面,如果您有想分享的技術(shù)、觀點(diǎn),可通過電子郵件(tangxy#csdn.net,請把#改成@)投稿。

    第一時(shí)間掌握最新移動(dòng)開發(fā)相關(guān)信息和技術(shù),請關(guān)注mobilehub公眾微信號(hào)(ID: mobilehub)。

    你如果問我:

    生活中你覺得必不可少的一件電子產(chǎn)品是什么?

    那么我會(huì)毫不猶豫的回答你:

    是耳機(jī)!

    出門忘帶耳機(jī)是絕對不能忍

    聽不聽沒關(guān)系,但是有它比較安心

    我覺得生活中不僅是我

    很多人都對耳機(jī)有一種依賴

    因?yàn)楹芏嗳硕枷矚g音樂

    我也經(jīng)常看到我們的程序員同事戴著耳機(jī)工作

    帶線的、入耳式的、耳麥....

    多種多樣的耳機(jī)類型

    有時(shí)候我好奇他們是否戴耳機(jī)也是聽音樂

    就去問他們在聽什么

    有的說啥都沒聽,就隔一下音而已

    有的說在聽郭德綱的相聲

    有的說在聽音樂...

    隨著技術(shù)的更新迭代

    我們的對耳機(jī)的要求也越來越高

    有線耳機(jī)已經(jīng)不能滿足我們的需求

    無線藍(lán)牙耳機(jī)成為我們越來越追捧的類型

    AirPods對于我們普通收入的人來說

    是一種奢侈品

    而我只能拿著我為數(shù)不多的錢

    找著性價(jià)比都還不錯(cuò)的耳機(jī)

    還不錯(cuò),讓我找到了這款蘭士頓T7R 真無線藍(lán)牙耳機(jī)

    顏值完全不輸AirPods

    Fashion

    IN AUTUMN

    足夠的實(shí)力才能配得上高顏值

    9大功能滿足我們的耳機(jī)需求

    9大功能,滿足你的需求

    自帶充電倉,持久續(xù)航

    配備強(qiáng)大的充電倉,隨時(shí)隨地為耳機(jī)充電

    500毫安充電倉電池容量

    1.5小時(shí)充電時(shí)長

    自備充電倉,充電更方便

    千元級HIFI音效

    采用14.2MM定制石墨烯振膜發(fā)聲單元

    強(qiáng)化低音下沉深度,讓你不禁沉浸其中

    千元級HIFI音效

    不負(fù)眾望,智能降噪

    智能降噪技術(shù),自適應(yīng)過濾噪音,清晰收錄人聲

    即使喧鬧的環(huán)境下也能聽清楚

    不負(fù)眾望,智能降噪

    性價(jià)比如此高的耳機(jī)

    并不用高價(jià)即可得到

    這款耳機(jī)只用不到160的價(jià)格即可買到

    下單前輸入優(yōu)惠碼“codebook”可領(lǐng)取40元碼書專屬優(yōu)惠碼

    原價(jià)199

    使用優(yōu)惠碼后僅需159元!

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有