觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊
客戶中心
關(guān)注云客
提問者:云客網(wǎng)官方問答 | 分類:移動應(yīng)用UI設(shè)計(jì) | 瀏覽35次 | 懸賞分:0積分 2017-03-06 11:05:51
我要回答
龍?zhí)?/span>
隨著微博、LBS 等移動互聯(lián)網(wǎng)服務(wù)的火爆普及,越來越多的蘋果開發(fā)者希望制作各網(wǎng)絡(luò)服務(wù)的 iPhone 客戶端。CocoaChina 會員 “qdvictory” 的《基于網(wǎng)絡(luò)的客戶端開發(fā)技巧》系列文章詳細(xì)介紹了 iPhone 客戶端應(yīng)用的開發(fā)思路和注意事項(xiàng),希望對蘋果開發(fā)者們有所幫助。 一、做一個(gè)程序之前,要明確你要做的是什么。這之間道道不少,不僅僅要實(shí)現(xiàn)功能,還要考慮到程序功能之間是如何鏈接,用戶如何交互。在這個(gè)基礎(chǔ)上,才能和美工一起配合,把程序的設(shè)計(jì)做好,而僅僅的 UI,已經(jīng)不能稱得上是完整的設(shè)計(jì)了。利用 API 擴(kuò)展是必需的,Open API 不是你自家的 API,所以肯定是有局限性的,如何將 API 與產(chǎn)品良好的結(jié)合,是重點(diǎn),抓細(xì)節(jié),是重點(diǎn)。每條微博就是一個(gè)少量信息,所以客戶端要做的就是快,清楚,友好,穩(wěn)定。 快,不用說,加載速度快,瀏覽的速度快。 清楚,UI 布局的可識別性,一個(gè)頁面,不同的排版,字體的顏色,都將影響到用戶看這個(gè)頁面的速度。 友好,不需要太炫的效果,也不需要很酷的動畫,就算再簡單的 UI,也足以滿足用戶的需求,就看你如何做。不要爛加,有必要再加。 穩(wěn)定,這個(gè)要好好說說了。客戶端,畢竟不是單方面數(shù)據(jù)了,很有可能客戶端緩存與數(shù)據(jù)庫信息不統(tǒng)一,或者網(wǎng)絡(luò)問題導(dǎo)致接收數(shù)據(jù)出錯(cuò),這些都是需要做處理,多 測試,否則 crash 很杯具。前幾天同事給我看 Weico 在官方清空了短信息,然后再回來 weico 客戶端,直接導(dǎo)致 weico 持續(xù) crash,必須重裝,不知目前修正沒有。總得來說,多測試,尤其是在數(shù)據(jù)差異的方面。 二、就目前而言,主流的微博特效就不再多說了,以后有可能細(xì)講,基本上都有開源的了。 三、目前大多展示都是用的 tableview。這里就要多說說了。tableview 的使用方式有好多,下拉刷新,即可以將展示放到 tableview 的 subview 上,也可以放到 tableview cell 上,這 2 種有啥區(qū)別呢?目前沒有發(fā)現(xiàn)實(shí)質(zhì)上的區(qū)別,只是在計(jì)算的時(shí)候放在外面比較好算。 正常來說,展示的步驟為: 訪問api,獲取數(shù)據(jù) 將數(shù)據(jù)存入數(shù)據(jù) 在 tableview 上展示數(shù)據(jù),并載入相關(guān)的默認(rèn)圖片。(像新浪微博客戶端是用的 Webview 來展示的圖片,這個(gè)又可以叨叨一陣了,下次再說。。。) 自己封裝也好,用線程也罷,將下載的圖片保存到本地,并刷新 tableview cell。這里又要注意2點(diǎn): 1、保存到本地的文件名,像這種公共數(shù)據(jù),建議存放在同一文件夾中,像頭像,可以以用戶 id 為文件名存放,這樣做多賬號的時(shí)候可以直接利用到。關(guān)于與當(dāng)前賬號 有關(guān)的數(shù)據(jù)存于單獨(dú)文件夾(例如以 dir_ID 為名的文件夾)。以當(dāng)前賬號為文件名我認(rèn)為是不太安全的。像 weico,上次無意中發(fā)現(xiàn),他的緩存都是用我的登錄名,不知最新版本修改了沒有。 2、更新 cell 的時(shí)候,有不少方法是利用 path 和 tag 來確定修改哪個(gè) imageview,button,但是當(dāng) tag 被占用時(shí)就相當(dāng)郁悶,這時(shí)就要繼承一個(gè)子類。所以我比較建議直接用 tableview cell 的 reload cell 方法來刷新,這樣還可以刷新行高之類,相當(dāng)有用。 微博一般都是多行,sizeWithFont 確實(shí)比較慢,我能做的也只有在獲取了數(shù)據(jù)之后把所有的行高算出來保存,不知有沒有更好的方法會效率高一些。 四、特色功能。想做出與眾不同的產(chǎn)品,目前在我看來,只有特色功能。像微博的展示,lbs的簽到,再怎么做,也已經(jīng)大體定型,就算你做的再認(rèn)真,也是別的程序換一套皮膚,在我看來,投入成本還是換一個(gè)方面的好。想一些實(shí)用的功能,擴(kuò)展一下,在完成基本功能的同時(shí),可以給用戶一個(gè)使用自己程序的理由。 五、照片處理特效。現(xiàn)在基本都是用開源庫,主流的開源庫不說了,基本都是 C、C++的,只要能編譯成功,基本沒啥使用難度了。問題在于處理圖片的效率上。 六、安全性。像我們公司為了加強(qiáng)用戶密碼的安全性,特意買了SSL,為的就是讓用戶的賬號更安全。而 Open API 使得我們沒法控制,所以最好使用 oauth 認(rèn)證,以及不要將用戶的賬號暴露在緩存之中,這些都會增加風(fēng)險(xiǎn)。 (二)Webview及正則 隨著微博、LBS 等移動互聯(lián)網(wǎng)服務(wù)的火爆普及,越來越多的蘋果開發(fā)者希望制作各網(wǎng)絡(luò)服務(wù)的 iPhone 客戶端。CocoaChina 會員 “qdvictory” 的《基于網(wǎng)絡(luò)的客戶端開發(fā)技巧》系列文章詳細(xì)介紹了 iPhone 客戶端應(yīng)用的開發(fā)思路和注意事項(xiàng),繼第一章以后,今天發(fā)布第二章:Webview及正則 目前微博客戶端基本都使用Webview,這篇就詳細(xì)講解一下使用利用Webview展示微博的技巧。當(dāng)然,主要以代碼為主。Demo暫時(shí)就不提供了。之前也有幾篇博文提到相關(guān)的,這里簡單總結(jié)一下。 為什么要用webview來展示呢,就我目前的經(jīng)驗(yàn)來看,為了文字鏈接圖片混排比較方便。所以既然要混排,又不能讓人覺得這是webview,首先就要禁止bounces,也就是邊緣滾動。方法如下: [(UIScrollView *)[[webview subviews] objectAtIndex:0] setBounces:NO]; webview的各種復(fù)制,全選禁止方法: document.documentElement.style.webkitTouchCallout = “none”; //禁止彈出菜單 document.documentElement.style.webkitUserSelect = “none”;//禁止選中 具體代碼可以看下 http://www.minroad.com/?p=275 http://www.minroad.com/?p=266 webview使用起來注意的問題有: loadhtml相當(dāng)慢,所以要做到良好的展示效果,想辦法預(yù)加載吧。當(dāng)然用JS也可以。 使用js的時(shí)候千萬要外部導(dǎo)入js,不然會調(diào)試到頭大都調(diào)試不好。。各種轉(zhuǎn)義字符 對于iPhone4,記得圖片尺寸要雙倍。 webview的html里面盡量用/”而不是’ 比如而不是 下面說一下正則,將鏈接替換的方法,用的RegexKitLite: - (NSString *)replacePersonLink:(NSString *)_str { NSString *regexString = @"@//b(//w+)//b"; NSString *replaceWithString = @"@$1"; NSString *replacedString = NULL; replacedString = [_str stringByReplacingOccurrencesOfRegex:regexString withString:replaceWithString]; NSLog(@"%@",replacedString); return replacedString; } 提取鏈接的方法: NSString *linkString = [NSString stringWithFormat:@"%@ %@",[dic getWBText],[dic getWBRetweetedText]]; NSString *regexString = @"http://bhttps?://[a-zA-Z0-9//-.]+(?::(//d+))?(?:(?:/[a-zA-Z0-9//-._?,'+//&%$=~*!():@////]*)+)?"; NSArray *splitArray = [linkString componentsMatchedByRegex:regexString]; 解析一個(gè)字符串的方法 NSString *regexString = @"]+)/" rel=/"([^>]+)/">([^>]+)"; NSDictionary *urlDictionary = [searchString dictionaryByMatchingRegex:regexString withKeysAndCaptures:@"url", 1, @"followed",2,@"source",3, NULL]; if (![[urlDictionary allKeys] containsObject:@"source"]) { NSString *regexString = @"]+)/">([^>]+)"; urlDictionary = [searchString dictionaryByMatchingRegex:regexString withKeysAndCaptures:@"followed",1,@"source",2, NULL]; } source string為”新浪微博” 利用這些,基本可以完成微博上的需求。同時(shí)可以利用JS實(shí)現(xiàn)漸近漸現(xiàn)等效果,用CSS將布局處理的更合理。不會用CSS就td吧。 (三)上下拖動 這次來說說像 Reeder 那樣上下拖動切換的效果是如何做的。如何觸發(fā)這里就不多說了,靠 contentofset 也可以,按鈕也可以。這里主要介紹一下這種效果的3種做法,各有好處。
W***m
的《基于網(wǎng)絡(luò)的客戶端開發(fā)技巧》系列文章詳細(xì)介紹了 iPhone 客戶端應(yīng)用的開發(fā)思路... 才能和美工一起配合,把程序的設(shè)計(jì)做好,而僅僅的 UI,已經(jīng)不能稱得上是完整的設(shè)計(jì)了。...
百度搜索推出驚雷算法,嚴(yán)厲打擊通過刷點(diǎn)擊排名
2017年11月20日
任務(wù):
任務(wù):
任務(wù):
任務(wù):
任務(wù):
任務(wù):
任務(wù):
任務(wù):