Just My Life & My Work

Posts tagged ‘ios’

[圖解] iOS 1-8 進化過程

我是在iOS 6也就是iPhone 5發表前開始學習寫iOS App,在此之前對於過去世代的iOS和iPhone沒啥感覺,然而現在全然不一樣,因為使用智慧手機平板電腦,增添我生活的樂趣成就感

透過這張圖解 iOS 1-8 進化過程,讓我快速回顧iOS與iPhone進化的規格與功能,真是佩服外國人,透過圖解的方式,讓我瞭解需要知道的事情!

The-Evolution-of-iOS-1-to-8

參考:iOS Timeline – Infographic – 7dayshop Blog。

圖片

[iOS] iPhone 螢幕解析度

今年度開發iOS 8 app,iPhone螢幕解析度需要考慮四種!若考慮所有顯示狀況,同一張圖同時要準備好三種維度的圖:@1x、@2x、@3x,其實只要看這張圖就知道我想表達什麼了!

iphone-screen-size-ppi

今日和夥伴做Side Project,體會到@3x圖的重要性!在iPhone 6以下都能用兩年前開發的色盤選色技術,然而在iPhone 6+卻會有問題,原因是少準備@3x圖:P~

參考:你的興趣真的可以改變世界!Instagram、Uber 的創辦人就做到了別再苦苦經營粉絲團!Side project 在三個月內救了我的新創公司

[iOS] iOS 8 Remote/Local Notification

每年iOS更新後,SDK中多少會有些API在最新的版本被棄用,此時就要去寫condition code分別跑在不同版本的iOS。Notification也在iOS 8有所變動,包含Remote Notification與Local Notification,我們就來看怎麼改比較容易吧~

iOS 8 Remote:Local Notification

如果沒有處理iOS 8的情況,是不會跳出請求允許傳送通知的提示喔!

(繼續閱讀…)

[iOS] 在App間分享資料 (Share Data Between Apps)

過去App的資料是被保護在沙盒(Sandbox)之中,因此無法讓其它App來存取。現在Apple設計一個共享區域,在此區域可以讓不同的App來存取,只是這些App必須是同一個開發者呢!

在App間分享資料 (Share Data Between Apps)

在專案中的Capabilities中打開App Groups,接著創立一個App Groups,我這裡是設定group.happy.share,程式碼中會用到喔~

(繼續閱讀…)

[iOS] WatchKit 與 UIKit

Apple Watch即將上市,對iOS開發者而言,無疑是個一定要了解的全新裝置,特別是在使用者體驗上,如何設計適合小螢幕的界面。這種改變從電腦轉移到手機已經歷過一次,如今要從手機移轉到手錶,螢幕可是越變越小呢~

手機上所呈現的界面是透過UIKit framework,而手錶所呈現的界面則是透過WatchKit framework,這兩者有相似的地方,也有許多不一樣的地方

WatchKit 與 UIKit

基本上,WatchKit是UIKit的簡化版,之後Apple應該會根據需求新增修改些property或method。一般而言,手錶的功用是瀏覽重於互動,所以framework少有互動的設計。

WatchKit的元件

WKInterfaceObject繼承於NSObject。WKInterfaceImage繼承於WKInterfaceObject、WKInterfaceLabel繼承於WKInterfaceObject,其餘依此類推,都是繼承於WKInterfaceObject。

其property與method也很陽春,只有一些基本的設定。

  • WKInterfaceObject

#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <WatchKit/WKDefines.h>

WK_CLASS_AVAILABLE_IOS(8_2)
@interface WKInterfaceObject : NSObject

- (instancetype)init NS_UNAVAILABLE;

- (void)setHidden:(BOOL)hidden;
- (void)setAlpha:(CGFloat)alpha;

- (void)setWidth:(CGFloat)width;   // setting to 0 means use natural size. ignored for table
- (void)setHeight:(CGFloat)height;

@property(nonatomic,readonly,copy) NSString *interfaceProperty;   // same as controller's property name

@end

@interface WKInterfaceObject (WKAccessibility)

- (void)setAccessibilityLabel:(NSString *)accessibilityLabel;
- (void)setAccessibilityHint:(NSString *)accessibilityHint;
- (void)setAccessibilityValue:(NSString *)accessibilityValue;

@end
  • WKInterfaceImage

#import <Foundation/Foundation.h>
#import <WatchKit/WKDefines.h>
#import <WatchKit/WKInterfaceObject.h>

@class UIImage;

WK_CLASS_AVAILABLE_IOS(8_2)
@interface WKInterfaceImage : WKInterfaceObject

- (void)setImage:(UIImage *)image;
- (void)setImageData:(NSData *)imageData;
- (void)setImageNamed:(NSString *)imageName;

- (void)startAnimating;	      // play all images repeatedly using duration specified in interface description
- (void)startAnimatingWithImagesInRange:(NSRange)imageRange duration:(NSTimeInterval)duration repeatCount:(NSInteger)repeatCount; // play subset of images for a certain number of times. 0 means repeat until stop
- (void)stopAnimating;

@end

我們很驚訝地發現,居然沒有frame這個特性!也就是我們無法設定其座標(但可設定長與高),也無法使用Auto Layout。實際上,WatchKit界面元件只能在格子中透過邊界相對位置來放置。

還有許多特性需要好好了解,因為本來就不該把手錶當作手機來設計,而簡化自然有其好處!持續去研究吧~

參考:WatchKit – NSHipster。

[iOS] 大小類別 (Size Class)

大小類別 (Size Class)iOS 8新釋出的類別,主要目的是想要解決設備歧異的問題,透過實作Size Class,我們可以減少許多客製設備類別 (iPhone、iPad)與螢幕大小 (iPhone:3.5吋、4吋、4.7吋、5.5吋,iPad:7.9吋、9.7吋)的程式碼!還有之所以推出,是為了因應未來有更多不一樣螢幕大小的產品(如Apple Watch),所以若能採用Size Class便可減輕開發負擔!

Size Class

其分為普通(Regular)緊密 (Compact)兩個種類(class)。開發者便可以無視實際的尺寸,而是對這兩類和它們的組合進行適應。這樣不論在設計時還是程式碼上,我們都可以不再受限於實際的尺寸,而是變成遵循尺寸的視覺感官來進行適應。

(繼續閱讀…)

[iOS] 版本市佔率 (Version Market Share)

iOS 8釋出已經三個月,我們來看一下現在iOS各版本的市佔率吧!真沒想到,比起Windows各版本市佔率,iOS可是非常快速地讓使用者安心更新!這種無痛升級且能享受更多的功能服務,當然會讓多數人都能夠接受!

iOS 版本市佔率 Version Market Share

2014/12/08由Apple官方統計,iOS 8占有63%iOS 7占有33%最新的兩個iOS版本就占有96%,讓開發者們如我樂觀其成!因為我們只要優先著重在iOS 7以上開發即可,若客戶說想要支援iOS 6,那麼就拿出這一張圓餅圖給他看吧~為了支援不到4%的iOS版本,而多花費時間與金錢在上頭,可不是個明智的選擇呢~

iOS 7以後的扁平化設計,可說是個劃時代的分水嶺,無論是在使用者體驗上,或是在開發者工具上,甚至軟硬體新的功能與服務,都將讓你我引領期盼!期許自己能深入體會研究其中奧妙之處,進而設計出自己他人都愛不釋手的應用軟體:)~

200930更新

2020/6/17,iOS 13市佔92%、iOS 12市佔12%、iOS 11之前版本則市佔2%。

2020 iOS and iPadOS Usage

此外,參考我正在做的快樂印App,是透過Facebook SDK而來的統計,在開發者後台就能查詢。

2020/9/30最新版本iOS 14有6.72%。至於iOS 10以下版本,可以考慮不要支援,畢竟用戶數非常少,若維護成本過高,就割捨掉吧!

不過我想,還在使用iOS 10以前版本的手機,應該也跑不太動現在我們的快樂印App吧~

快樂印 Facebook 2020 iOS and iPadOS Usage

mixpanel iOS 14

參考:App開發前要考量的首要關鍵數值 -「iOS版本市佔率」Apple Developer Support

[iOS] 動作框架 (Motion Framework)

這週同事講到2014 WWDC中一個相當有趣的session,跟感應器有關係,喜歡運動的人有福啦~

612 motion tracking with the core motion framework

motion framework03

透過M7動作處理器加上感應器,可以全天候(24小時,一週七天)地偵測。

(繼續閱讀…)

圖片

iOS 支援陣列 (iOS Support Matrix)

是時候再查看iOS 支援陣列 (iOS Support Matrix)這張極具巧思的圖,觀察得出Apple八年來進步的軌跡,期許自己的職涯持續累積奉獻,提高生活品質,達成自我實現

iOS_Support_Matrix_v3_1_2-October2014

參考:iOS Support Matrix

[iOS] 專案中Info.plist常用選項的說明

已經開發iOS滿兩年,對於專案中Info.plist常用選項,還是有許多不明白的項目,平常也沒找到相關說明,好在偶然發現前人整理好的經驗談,描述得讓我輕易明白其用途,往後開發App就可以考慮嘗試看看~

Info plist1

(繼續閱讀…)

標籤雲