en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

11.06.2013

使用 Safari 上的網頁檢閱器查看 iOS 裝置中的網頁動態

 

網頁除錯除上,除了上本身編譯器提供的相關功能外,另一個聯想到的應該是使用瀏覽器的動態的網頁檢視功能,目前許多瀏覽器都有提供動態的網頁檢視功能,像是查看原始碼、網頁架構或是連結方式等等相當方便,有些檢閱器甚至可以動態編輯、分析和除錯,但是,這些功能僅提供給電腦上的瀏覽器使用,如果換做是 iOS 行動裝置上的瀏覽器,又該怎麼辦?別擔心,在新版的 Safari 7.0 版本中,你可以透過簡單的設定來完成這項功能,讓你在開發行動裝置的網頁時也可以無往不利。

10.17.2013

使用 UIKit Dynamics 實作遊戲中的撞擊效果

 

在之前的關於 UIKit Dynamics 的二三事一文中,我們已經介紹過 iOS 7 SDK 中的新成員 UIKit Dynamics,下面示範我們就透過 UIKit Dynamics 來實作遊戲中常見的物理這裡撞擊效果,這只是一個簡單的示範,如果你正打算使用 UIKit Dynamics 來寫遊戲的話這邊並不建議,反而,在遊戲方面你可以透過 iOS 7 SDK 中的另一個新成員 Sprite Kit Framework  或是 cocos2d API 來達成。

10.11.2013

關於 UIKit Dynamics 的二三事

  

UIKit Dynamics 是在 iOS 7 SDK 中才有的新東西,透過 UIKit Dynamics 我們能更容易的賦予 UIView 一些物理效果,像是受到重力掉落、UIView 彼此之間的反彈碰撞等等,如果你以前玩過 cocos2D 的 API,那你對這些物理效果一定不會感到陌生,下面我們將對 UIKit Dynamics 做些點單的說明,你可以在官方網站的 UIKit Dynamics Catalog 找到更多的範例說明。

9.05.2013

開啓其他應用程式 App 的方法

  
  
在開啓其他應用程式之前,我們必須要先知道該應用程式的 URL Scheme,先前文章已經寫過許多開啓內建應用程式的方法,之所以能夠成功呼叫這些應用程式,其原因就在於我們已經事先知道呼叫它們時所需要的 Scheme,像是使用 http: 可以呼叫 Sanari,或是使用 sms: 可以呼叫內建簡訊的應用程式等,而下列示範將演示如何替一個應用程式設定它專屬的 Scheme,以及如何使用其他應用程式來呼叫它。

使用 UIApplication 呼叫 iOS 內建地圖 App

   
從iOS 6.0 起,Apple 內建地圖以不再使用 Google Map,改由 Apple 自家提供的地圖,但是你可以透過修改 Domain 名稱來決定是要使用 Safari
 開啟 Google Map 或是開啟內建的地圖,示範如下。

8.07.2013

使用 Xcode 檢測 Memory Leak 的方法


Memory Leak 又稱為記憶體洩漏,主要是在程式執行的階段某個被配置(Allocated)的記憶體無法在被參照(Referenced),也無法被釋放(Released)所導致的,它會造成記憶體的使用量隨著時間慢慢增加,直到系統在也無法負荷而 Crash,這個問題在記憶體使用量有限的手持裝置上顯得非常的重要,如何確保我們所撰寫的程式沒有 Memory Leak  的問題呢?可以從 Xcode 所提供的小工具來尋找解答。

7.24.2013

iOS 應用程式狀態的變遷


在上圖,說明了 iOS 應用程式在執行上各種狀態之間的變遷關係,與這些狀態在改變時所觸發的函式,這些函式在建立專案時都也會自動建立在 AppDelegate.m 中。(如果是使用 Xcode 4.0 以前的版本部分函式可能需要自行手動撰寫)

7.01.2013

善用 #pragma mark Preprocessor 整理你的程式碼

如果你常使用專案樣板製作你的專案, 那麼 #pragma mark 這個前端處理程式你一定不會感到陌生,它是一個存在於 Clang(LLVM)編譯器中的輔助工具,就如字面上的意思它提供你整個程式碼區段一個標籤,好像你將來在重新檢視你的程式碼時,可以很快的找到你要的函式。

5.27.2013

取得並判斷物件的實體類別

在 Objective-C 中,所有的物件都是繼承 NSObject Class,所以 NSObject Class 也是在 Objective-C 中所有物件最頂層的超類別 SuperClass,下面示範我們就已最常被使用的 UIView Class為例,利用從 NSObject Class 中所繼承而來的方法函式,判斷該物件到底繼承或是屬於哪些類別,這些技巧也很常被使用在程式執行上,即時的查閱物件的類別並給予不同的處理方式。

5.20.2013

變數的 Setter 與 Getter

在程式中我們可以透過一個變數的 Setter 和 Getter 方法函式來設定或是取用該變數的數值,由於這兩個方法函式太常被使用了,導致一般人根本不會去注意它們底是怎麼產生的,下列示範提供幾種方式來產生或是改寫 Setter 和 Getter 方法函式,讓我們在存取相關的變數實體時,能有更多的應用。

1.21.2013

使用圖學的方法取得目標影像的平均亮度值

嚴格來說這篇文章與 iOS SDK 並沒有太大的關係,因為使用圖學的方法求出影像的亮度,可以應用於電腦圖學上的任何地方,但是基於 iOS SDK 中所提供的 API,並未能夠讓我們控制相機的光圈或是環境光源感應器 Proximity 的詳細參數,因此在實作上,若要取得目標影像的平均亮度,還是得仰賴圖學的原理。

12.26.2012

類似 Observer Pattern 的 NSNotificationCenter

在 Design Patterns 中的 Observer Pattern 主要目是用來解決一對多的物件之間的依附關係,只要物件狀態一有變動,就可以通知其他相依物件做跟更新的動作,舉個簡單的例子 Observer 就像是一個班級裡負責聯絡的窗口一樣,當班級內有人有訊息需要通知給所有人時,只要告訴這個聯絡窗口,之後就由聯絡窗口統一通知班級內的所有人,當然也包含發佈消息的這個人。在 Objective-C 裡我們並不需要真的去實作出 Observer Pattern,透過使用 NSNotificationCenter 也可以達到相同的效果。

12.16.2012

Blocks!你不得不學習的 iOS 4 coding 新技術!

Blocks 並不是要去阻擋什麼東西,Blocks 是雪豹作業系統以及 iOS 4 的新 coding 方式。Block 其實是一段由兩個大括弧所包含的程式碼,類似函數一樣,但是不需要在使用前先行在 .m 檔案裡面宣告,只要在你需要用到的時候,寫一個程式碼的區塊也就是 Block,然後利用他來執行所需的工作就可以了。

11.01.2012

實作人臉偵測

 

從 iOS 5.0 SDK 開始,就可以使用 CoreImage.framework 來實作人類的臉部偵測,透過 CIDetector 類別,我們可以製作一個偵測濾鏡,並且設定它的精準程度,下面就來看看如何實作它,在實作前請先對專案新增 CoreImage.framework,並引用其標頭檔於對應的 Class 中,新增的方法請參考 Xcode 4 新增 Framework 的方法一文。(圖片來源:www.cafebabel.co.uk

10.19.2012

實作可以旋轉、拖曳與縮放的 UIView

  

UIView 的旋轉、拖曳與縮放是在 iOS 中很常被使用的技巧,下面我們以 UIImageView 為例,並且透過手指與螢幕的互動來完成這些效果,在互動的部份我們使用手勢辨識 UIGestureRecognizer 物件,你可以參考手勢辨識 UIGestureRecognizer 物件一文,了解 UIGestureRecognizer 的使用方法,並完成相關設定,最後透過 CGAffineTransform 技術來完成 UIImageView 的旋轉、拖曳與縮放動作。

8.17.2012

在 Xcode 中快速切標頭檔與實作檔的方法

曾經有人說過,要看一個人程式寫的好不好,首先就要先看編譯器的熱鍵使用情況,熱鍵使用的越是熟練,就代表編譯器的使用成程度就越高,進而程式也就寫的越好,或許吧!下面所介紹的方法是可以幫助大家使用熱鍵在 Xcode 編譯器中快速切換標頭檔與實作檔(Header File and Source File),在撰寫程式時不需要在使用滑鼠點來點去,省去不必要的麻煩,希望大家程式也都能寫得越來越好。

7.24.2012

在應用程式中使用 Emoji 繪文字的方法


Emoji 繪文字是日本在通訊上被廣泛使用的一種互動式情境圖片,你可以把它當成是一般的文字符號來使用,就如同一般文字一樣,每一個 Emoji 繪文字都有一個屬於自己的 unicode 編碼,當字符遇到這類的編碼時,就會自動轉換成對應的 Emoji 繪文字,其實不只是 Emoji 繪文字,所有 iOS 上的文字或是符號都有屬於自己的 unicode 編碼,你可以參考文末 Emoji 繪文字的 unicode 編碼,並實作以下程式碼來顯示它們。

7.10.2012

在兩個不同的 Class 之間傳遞參數的方法

Objective-C 是一個物件導向語言,基於物件導向的觀念,我們不太希望一個 Class(物件)過於龐大或是做太多的事情,所以往往會依物件的觀念將一個較大的個體拆成數個較小的 Class 來做表示,最後才將它們組合,雖然說這不見得是最好的作法,卻是最容易理解與實作的一種方式。既然一個較大的個體必須被分拆成數個容易實作的小物件,那麼這些小物件彼此之間的溝通就顯得格外重要,物件得溝通在此我們可以稱作是參數傳遞,參數傳遞都必須要花費相對成本,一支好的程式,必須在溝通成本與程式複雜度之間取得良好的平衡,並且同時具有容易維護與擴展的特性,關於這類的程式設計哲理可以參考「樣式導向(Design Pattern)」的相關書籍,都會有不錯的收穫。

6.29.2012

在模擬器 Simulator 中使用兩指多點觸碰的方法

  

在 Simulator 中可以藉由滑鼠移動和點擊來模擬單一手指對 Device 的操作,但是如果遇到多點觸碰時的應用該怎麼辦,是不是只能將應用程式移駕到實體機器上來做測試呢,其實 Simulator 還有是辦法應付一些基本的兩指操作手勢,讓你也可以在模擬器中輕鬆實作出一些簡單的兩指手勢功能。

5.18.2012

使用 CoreImage Framework 實作色相轉換

  

在之前的文章簡單改變 UIImage 色調的方法中,使用一個純色的遮色片與原始影像作混合,來達到色調轉換的效果,但這只是使用模擬的方式,若要真正改變影像的色相必須將原始影像轉換至 HSV 或 HIS Color Model 下,藉由更改 Hue 色相參數來達成。