這半年以來保持習慣性地在跑步,這都要歸功於我125超慢跑團員們,因為有他們讓跑步變得很有樂趣!團長阿芳建議我可以另買雙跑鞋,平常上班穿普通鞋,運動時穿慢跑鞋,如此還能延長鞋子的壽命,而我想她是對的,於是趁清明連假四天到全家福入手DIADORA男輕量慢跑鞋。
[寫真] DIADORA 男輕量慢跑鞋
[iOS] Apple Watch 目標架構
開發Watch App時,所要注意的角色有三個,因為Watch App無法獨自運行,需要透過iOS App來啟動與操作它,而彼此溝通的橋樑則是WatchKit Extension。我們可以很清楚地從下圖得知三個角色的關係:
使用Xcode 6.2開發Watch App時,原本的專案就是iOS App,操作順序:New->Target->Apple Watch->WatchKit App,便會同時產生WatchKit App與WatchKit Extension到專案中。WatchKit App僅含Storyboards與Resources,WatchKit Extension則含WatchKit Code與Resource。
據知未來Watch App可獨立運行,就讓我們拭目以待吧!
參考:Apple Watch开发初探。
[APP] 悠遊錢包 (Easy Wallet)
自從八年前上大學開始,搭捷運和搭公車就會使用學生悠遊卡,現在出社會有了信用卡,當然也少不了有悠遊卡功能的悠遊聯名卡!
有了這張悠遊卡 (Easy Card),想要搭乘交通工具(如捷運、公車、計程車等)去哪兒都相當方便,現在到某些知名店家(如便利商店、光南、星巴克、四海遊龍等)也能用來付款了!
身為iOS App軟體工程師的我,想要來研究悠遊錢包 (Easy Wallet),因為它的介面做得很吸引我!美中不足的地方在於,它只能顯示近三個月的消費資料,更早以前的紀錄大概都被刪除了,這就像人的記憶,隨著時間被淡忘了~
這個App設定最多只能登記五張悠遊卡。
[圖解] 漢堡的實際與理想
電視上和廣告單上的漢堡看起來總是那麼好吃,實際去麥當勞買來吃時,怎麼會差那麼多,這是絕大多數人的疑惑,包含我也是,然而在看完這張圖解漢堡的實際與理想就知道為什麼了~
左邊來自廚房,只花60秒鐘做出來;右邊來自影像處理軟體,花費4小時才完成。
要是我能買到右邊的漢堡,我將會捨不得吃呢!而食物本來就是要拿來吃,所幸現在隨身攜帶智慧手機,來給食物拍張遺照片,就能永久做紀念!
我在海賊王之人活著是要做什麼,一共有三項,其中一項就是吃美食,為了讓每天三餐都有驚奇的感覺,我會和同事吃不一樣的餐廳,就算輪到同一家餐廳,也吃到同一款食物,我依然會拍攝下來,寫下今日陪我吃美食的人、事、物,寫日記可以圖文並茂囉~
如何起得早 (How to Wake Up Earlier)一直是我想要做到的事情,在成功嶺度假的時候,每天不到十點就躺平,隔天天還沒亮,就自動醒來,16天早睡早起的習慣,在回到家變成平凡人後維持一週左右,之後就被同化了:P~
這圖解讓我們知道有些方法可以早起:
- 睡前讀一本你喜歡的書/雜誌
- 儘快得到一天最早的陽光
- 將鬧鐘放置在隔壁房間
- 喝一杯水
- 做個運動
- 計劃好的早餐
- 清理你的早晨
- 把你的手機或平板丟到遠遠的地方
- 不要在睡前吃東西/喝酒精
對目前的我來說,讀一本喜歡的書/雜誌和喝一杯水是舉手之勞。而我想到起床最高境界,會是由目標/夢想叫我醒來,一旦到了這個境界,我會每天樂在工作,就算週末假日也一樣!
[iOS] 可可豆莢多目標 (Cocoapods with Multiple Targets)
隨著時間發展,iOS App已經變得更加複雜且龐大,使用使用 CocoaPods 管理第三方套件已成為必要之事,然而這樣還是不夠,因為我們一個專案 (Project)中不再只是一個目標 (Target),這些目標都需要同一個函式庫 (Library),但是可可豆莢 (Cocoapods)預設只為最初的那個目標,我們該怎麼下指令才能讓所有目標都能引用同一函式庫呢?
原來只要多加link_with關鍵字,後頭接上目標的名稱即可!
/** Theme: Podfile with Multiple Targets IDE: Xcode 6 Language: Objective C Date: 104/04/01 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '6.0' link_with 'HappyCan', 'HappyCan Today', 'HappyCan WatchKit Extension' pod 'AFNetworking' pod 'ZBarSDK' pod 'Toast', '~> 2.4' pod 'LineKit', '~> 1.4.1' pod 'MBProgressHUD' pod 'OpenSSL-Universal', '1.0.1.k’
以上範例表示我專案中有三個目標(HappyCan、HappyCan Today、HappyCan WatchKit Extension),都需要引用相同的函式庫。
[iOS] HTML的CSS轉為NSAttributedString
曾經以為TextField和TextView裡的字只能統一屬性來顯示,從iOS 6開始它們都有了attributedText這個屬性,之後可以在字體間顯示不同的效果。
@property(nonatomic,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0); // default is nil
現在我們想更進一步知道,如何將HTML的CSS轉為NSAttributedString,之後看到網頁排版漂亮,就可直接拿來套用!
這是html呈現的字樣~
此外,可參考先前介紹的文章:多重文字屬性 (Multiple Text Attribute)、LABEL裡的行距、LABEL裡的字距。
台灣超級鐵人二項成績
[iOS] 包含字串 (Contains String)
程式語言會隨著時間進化。本次專案依然會處理字串,我自己定義字串來區別用途,想知道是否包含字串 (Contains String),iOS 7以前的作法很拐彎抹角,我是查詢StackOverflow才知道,而且不是查詢一次就記起來,可見這支NSString的method有多不直覺!
iOS 8以後,就可以用「包含」這個方法:
containsString
我很自然地就使用它,在iPhone 6/6+跑都沒問題,因為一買來就是iOS 8。直到夥伴大鳥跟我說,用它iPhone 5一跑就崩潰,後來得知它手機還是iOS 7,就在想是那支method有問題。答案揭曉⋯⋯
/**
Theme: Contains String
IDE: Xcode 6
Language: Objective C
Date: 104/03/31
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
/* containsString: returns YES if the target string is contained within the receiver. Same as calling rangeOfString:options: with no options, thus doing a case-sensitive, non-literal search. localizedCaseInsensitiveContainsString: is the case-insensitive variant. Note that it takes the current locale into effect as well. Locale-independent case-insensitive operation, and other needs can be achieved by calling rangeOfString:options:range:locale: directly.
*/
- (BOOL)containsString:(NSString *)aString NS_AVAILABLE(10_10, 8_0);
//--
/* These methods return length==0 if the target string is not found. So, to check for containment: ([str rangeOfString:@"target"].length > 0). Note that the length of the range returned by these methods might be different than the length of the target string, due composed characters and such.
*/
- (NSRange)rangeOfString:(NSString *)aString;
//--
NSString *str;
if ([str rangeOfString:@"HappyDay"].location != NSNotFound) {
// iOS 7以前拐彎抹角
}
if ([str containsString:@"HappyDay"]) {
// iOS 8以後可以很開心
}
把method的名稱設計得很直覺,真的是件好事呀~
參考:。











Written
on 2015 年 04 月 04 日