2013年6月23日 星期日
Xcode 5的開發密辛
彼得潘7月份在譯智教育訓練的Objective-C程式設計課程就快要開始了,雖然Xcode 5還在beta階段,不過彼得潘會在課堂上跟大家分享一些關於Xcode 5的開發密辛的!
http://www.ichih.com/iosappclass.html
2013年1月20日 星期日
為瘦身的Xcode安裝進階套件
強大的Xcode包山包海,幾乎各種程式開發相關的技術它都略懂。好處是我們只要裝了Xcode,就可以應付絕大多數的開發需求,不用再安裝其它軟體。但壞處就是它吃掉我們許多的硬碟空間,而Xcode好心幫我們安裝的許多東西我們卻可能一輩子都用不到。
新版的Xcode發揮強大的意志力,瘦身成功,只包含一些重要的套件,其它額外的套件我們需要時再從網路下載。以iPhone模擬器為例,預設只安裝最新版的模擬器,但為了開發能支援舊版iOS 5機器的App,彼得潘需要額外安裝iOS 5的模擬器,以下為完整的安裝步驟:
1. 點選Xcode -> Preferences ,顯示Xcode的偏好設定面版
2. 切換到Downloads頁面
Downloads頁面顯示我們可以安裝的套件清單。已安裝的會顯示Installed,尚未下載安裝的則顯示Install按鈕。彼得潘一眼就看到目標iOS 5.1 Simulator,點選Install後即可開始下載安裝。
3. 安裝成功後,在選擇App的執行目標時,清單上冒出了新的iPhone 5.1 Simulator和iPad 5.1 Simulator。
執行清單的最後一行,"More Simulators”,其實是安裝舊版模擬器的快捷管道,點選它將立即跳出剛剛的Downloads頁面,若是連iOS 5.0也想支援,可接著繼續安裝iOS 5.0 Simulator。
新版的Xcode發揮強大的意志力,瘦身成功,只包含一些重要的套件,其它額外的套件我們需要時再從網路下載。以iPhone模擬器為例,預設只安裝最新版的模擬器,但為了開發能支援舊版iOS 5機器的App,彼得潘需要額外安裝iOS 5的模擬器,以下為完整的安裝步驟:
1. 點選Xcode -> Preferences ,顯示Xcode的偏好設定面版
2. 切換到Downloads頁面
Downloads頁面顯示我們可以安裝的套件清單。已安裝的會顯示Installed,尚未下載安裝的則顯示Install按鈕。彼得潘一眼就看到目標iOS 5.1 Simulator,點選Install後即可開始下載安裝。
3. 安裝成功後,在選擇App的執行目標時,清單上冒出了新的iPhone 5.1 Simulator和iPad 5.1 Simulator。
執行清單的最後一行,"More Simulators”,其實是安裝舊版模擬器的快捷管道,點選它將立即跳出剛剛的Downloads頁面,若是連iOS 5.0也想支援,可接著繼續安裝iOS 5.0 Simulator。
2012年10月10日 星期三
模擬就好,何必來真的 - 模擬不同的App畫面情境
Xcode方便的所見即所得UI設計介面,讓彼得潘可以激發深藏的藝術家天份,輕鬆設計賞心悅目的App畫面,如下圖所示,可愛的獅子圖片,置中地呈現在4吋的App畫面上。 (感謝彼得潘的朋友,真正的藝術家,查爾斯提供圖片"一起走吧") 。但是有個小小的問題,不知道當App畫面是舊式的3.7吋或是iPhone水平時,畫面會變什麼模樣呢?
實際跑起模擬器,看看iPhone水平時的App畫面是一招。但此招未免太費功夫和時間。高手是不輕易出招的。
其實在我們編輯xib或storyboard時,點選xib裡最上層的view或是storyboard裡的view controller,然後再切換到Attributes Inspector頁面,即可模擬切換不同的畫面情境。如下圖所示,在Simulated Metrics區塊,有許多可以調整的項目,模擬各式不同的畫面情境。從Size和Orientation得知,目前我們處於4吋的直立畫面。
當我們將Size設為3.5吋,即可馬上看到3.5吋顯示的App直立畫面。
當我們將Size設為4吋,Orientation設為Landscape,即可馬上看到4吋顯示的App水平畫面。
當我們將Size設為3.5吋,Orientation設為Landscape,即可馬上看到3.5吋顯示的App水平畫面。
就是那麼簡單,善用Simulated Metrics,不用再費時地跑起摸擬器或是裝到iPhone上測試了。
查爾斯的blog視說新語:
2012年10月4日 星期四
Xcode的Objective-C語法轉換龍捲風大法
新一代的Objective-C語法,讓我們可以寫出更簡潔,可讀性更高,更不易出錯的App。但是,我們多年前以舊語法完成的App該怎麼辦呢? 是要將錯就錯繼續使用舊的語法,還是大刀闊斧地砍掉重練呢?
為了將來的美好,重練是好的,但像傻子一樣一個個找出過時的語法加以修改,實在太浪費時間了。為了增加約會的時間,多一點擇偶的選擇,讓我們透過Xcode的幫忙,如同龍捲風掃過般,瞬間將舊語法變成新語法吧。
接下來,彼得潘將以戴佩妮的好歌"擇偶條件"為例,介紹Xcode轉換語法的龍捲風大法!
舊語法:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
loveSong = [NSArray arrayWithObjects:@"要懂得尊師重道",
@"要懂得適度的討好",
@"偶爾浪漫會增加情調",
@"不能長的太高",
@"脾氣不能太暴躁",
@"血型星座要當做參考", nil];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
cell.textLabel.text = [loveSong objectAtIndex:indexPath.row];
return cell;
}
Xcode轉換語法的龍捲風大法:
點選Edit -> Refactor -> Convert to Modern Objective-C Syntax
檢視被龍捲風掃過,需要轉換的地方,按下Save即完成轉換。
執行App:
看吧,輕輕鬆鬆即完成轉換,讓我們聽聽Penny的擇偶條件,利用多出來的時間多多去約會吧。
為了將來的美好,重練是好的,但像傻子一樣一個個找出過時的語法加以修改,實在太浪費時間了。為了增加約會的時間,多一點擇偶的選擇,讓我們透過Xcode的幫忙,如同龍捲風掃過般,瞬間將舊語法變成新語法吧。
接下來,彼得潘將以戴佩妮的好歌"擇偶條件"為例,介紹Xcode轉換語法的龍捲風大法!
舊語法:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
loveSong = [NSArray arrayWithObjects:@"要懂得尊師重道",
@"要懂得適度的討好",
@"偶爾浪漫會增加情調",
@"不能長的太高",
@"脾氣不能太暴躁",
@"血型星座要當做參考", nil];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
cell.textLabel.text = [loveSong objectAtIndex:indexPath.row];
return cell;
}
Xcode轉換語法的龍捲風大法:
點選Edit -> Refactor -> Convert to Modern Objective-C Syntax
檢視被龍捲風掃過,需要轉換的地方,按下Save即完成轉換。
執行App:
看吧,輕輕鬆鬆即完成轉換,讓我們聽聽Penny的擇偶條件,利用多出來的時間多多去約會吧。
2012年9月12日 星期三
找不到Xcode的xcrun
在將Storyboard做Localization時,我們需要於Terminal輸入以下指令,將精心翻譯的語系版本文字輸入到Storyboard的畫面上。
ibtool --strings-file MainStoryboard.strings --write MainStoryboard.storyboard ../en.lproj/MainStoryboa.storyboard
ibtool --strings-file MainStoryboard.strings --write MainStoryboard.storyboard ../en.lproj/MainStoryboa.storyboard
此指令將用到xcrun,而xcrun必須找到一個存在的Xcode路徑。當我們進行多次Xcode的安裝,移除動作後,可能發生xcrun找不到Xcode的問題,出現以下錯誤訊息
xcrun: Error: could not stat active Xcode path '/Applications/Xcode45-DP4.app/Contents/Developer'. (No such file or directory)
這是因為xcrum找尋的Xcode45-DP4.app已經不存在,那是舊的路徑。假設目前Xcode位在/Applications/Xcode.app,只要輸入以下指令,即可解決問題
sudo xcode-select -switch /Applications/Xcode.app
2012年8月20日 星期一
Xcode的scheme共享
好東西要和好朋友分享,對於開發App的工程師來說,Xcode上的scheme影響了App的生成和包裝,絕對是不能不享的必需品。接下來就讓彼得潘示範如何和團隊伙伴們共享scheme吧。
1. 在github上建立專案ShareScheme
2. 建立Xcode專案ShareScheme
3. 將Xcode專案ShareScheme和github做連結
git remote add origin https://github.com/deeplovepan/ShareScheme.git
git push -u origin master
4. 新增scheme "ShareScheme for peter pan"
從scheme清單裡點選Manage Schemes
新增ShareScheme for peter pan,並將Scheme列表裡欲共享的對象都勾選。( Shared欄位)
5. 將分享的scheme加入git管理
前一步勾選Shared後,專案下將生成xcshareddata資料夾,此資料夾下為我們想要和朋友共享的檔案。
(1) git status
->
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ShareScheme.xcodeproj/project.xcworkspace/
# ShareScheme.xcodeproj/xcshareddata/
# ShareScheme.xcodeproj/xcuserdata/
(2) git add ShareScheme.xcodeproj/xcshareddata/
(3) git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: ShareScheme.xcodeproj/xcshareddata/xcschemes/ShareScheme for peter pan.xcscheme
# new file: ShareScheme.xcodeproj/xcshareddata/xcschemes/ShareScheme.xcscheme
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ShareScheme.xcodeproj/project.xcworkspace/
# ShareScheme.xcodeproj/xcuserdata/
1. 在github上建立專案ShareScheme
2. 建立Xcode專案ShareScheme
3. 將Xcode專案ShareScheme和github做連結
git remote add origin https://github.com/deeplovepan/ShareScheme.git
git push -u origin master
4. 新增scheme "ShareScheme for peter pan"
從scheme清單裡點選Manage Schemes
新增ShareScheme for peter pan,並將Scheme列表裡欲共享的對象都勾選。( Shared欄位)
5. 將分享的scheme加入git管理
前一步勾選Shared後,專案下將生成xcshareddata資料夾,此資料夾下為我們想要和朋友共享的檔案。
(1) git status
->
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ShareScheme.xcodeproj/project.xcworkspace/
# ShareScheme.xcodeproj/xcshareddata/
# ShareScheme.xcodeproj/xcuserdata/
(2) git add ShareScheme.xcodeproj/xcshareddata/
(3) git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: ShareScheme.xcodeproj/xcshareddata/xcschemes/ShareScheme for peter pan.xcscheme
# new file: ShareScheme.xcodeproj/xcshareddata/xcschemes/ShareScheme.xcscheme
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ShareScheme.xcodeproj/project.xcworkspace/
# ShareScheme.xcodeproj/xcuserdata/
(4) git commit -a
(5) git push
經過以上步驟,當彼得潘的好朋友溫蒂從github下載ShareScheme專案時,將幸福地一次擁有ShareScheme和ShareScheme for peter pan兩個Scheme。
2012年6月15日 星期五
Xcode的快速注解 - 移除情詩三百首多出的最好不相見
將程式碼裡暫時用不到的程式碼注解起來是每個程式設計師都會遇到的麻煩事。Xcode是如此地貼心,連此等小事都幫我們設想好了。從今而後,就算是1000行的程式區塊需要注解,也不過是片刻之間即能完成的小事。
原先彼得潘將六世達賴喇嘛的十誡詩存成字串,準備在情詩三百首App裡介紹。
然而人算不如天算,想不到最後彼得潘收集了301首情詩,經過反覆思量後,只好將此首十誡詩暫時移除。我們不用一行行地打上 // ,只要經過以下2個步驟,即可輕易將整首詩注解起來。
(1) 將整首詩點選起來
(2) 按下 command + /
若是一時心軟,決定將App改名為情詩301,此時只要再一次操作剛剛介紹的2個步驟,即可將 每一行開頭的 // 移除。
2012年5月20日 星期日
讀心術 - 看透App內部的檔案明細
1. 打開Organizer視窗
2. 點選彼得潘連接至Mac上的iPhone
2. 點選彼得潘連接至Mac上的iPhone
3. 點選Applications,列出App清單。
4. 於App清單裡找尋目標,MillionKissInParis
此時下方的區塊將顯示App裡的檔案,選擇檔案後,接下Download按鈕即可將檔案另存至Mac
2012年3月9日 星期五
github和Xcode的結合
1. 在Mac上從Xcode 建立新專案PeterPanCocoaLib
從organizer視窗的Repositories分頁找到PeterPanCocoaLib,此時可看到已經有了第一次的Initial Commit。
2. 在github上建立專案PeterPanCocoaLib,取得SSH連結
3. 在organizer視窗的Repositories分頁找到PeterPanCocoaLib
點選Remotes -> Add Remote
4. 輸入remote資訊
name: origin
Location: SSH連結
5. 將Mac上的專案PeterPanCocoaLib push到remote
從organizer視窗的Repositories分頁找到PeterPanCocoaLib,此時可看到已經有了第一次的Initial Commit。
2. 在github上建立專案PeterPanCocoaLib,取得SSH連結
3. 在organizer視窗的Repositories分頁找到PeterPanCocoaLib
點選Remotes -> Add Remote
4. 輸入remote資訊
name: origin
Location: SSH連結
5. 將Mac上的專案PeterPanCocoaLib push到remote
2012年3月6日 星期二
為太空飛鼠建立static library
感謝蘇森力畫了可愛的太空飛鼠,
今天彼得潘將為各位介紹如何建立static library (.a檔)
讓所有喜歡牠的人,
都能輕易將牠加入自己開發的App。
1. 新增target
static library也是target的一種。
2. 選擇Cocoa Touch Static Library
3. 將static library,也就是target的名稱命名為CuteMouse
4. 新生的target, CuteMouse。
5. 將欲編譯成libCuteMouse.a的source code加入
比方CuteMouse.m想加入,那麼我們必須在其Target Membership的設定裡將CuteMouse勾選
6. 編譯libCuteMouse.a
請針對device和simulator分別編譯,產生對應的CuteMouse.a。因為到時候別人在使用.a時,
必須依據編譯的平台選擇合適的.a。
7. 在新的專案使用libCuteMouse.a
(1) 將libCuteMouse.a加入專案
(2) 將libCuteMouse.a的header檔和圖檔加入專案。若沒有加入header檔,compile時會無法認得。
今天彼得潘將為各位介紹如何建立static library (.a檔)
讓所有喜歡牠的人,
都能輕易將牠加入自己開發的App。
1. 新增target
static library也是target的一種。
2. 選擇Cocoa Touch Static Library
3. 將static library,也就是target的名稱命名為CuteMouse
4. 新生的target, CuteMouse。
5. 將欲編譯成libCuteMouse.a的source code加入
比方CuteMouse.m想加入,那麼我們必須在其Target Membership的設定裡將CuteMouse勾選
6. 編譯libCuteMouse.a
請針對device和simulator分別編譯,產生對應的CuteMouse.a。因為到時候別人在使用.a時,
必須依據編譯的平台選擇合適的.a。
(1) 將libCuteMouse.a加入專案
(2) 將libCuteMouse.a的header檔和圖檔加入專案。若沒有加入header檔,compile時會無法認得。
2012年2月28日 星期二
新增繼承UIViewController的檔案 (page 10-4)
原來在Xcode 4.2可以直接於Cocoa Touch頁面選擇UIViewController subclass
在Xcode 4.3已經沒有UIViewController subclass,因此要選擇Objective-C class,
然後於下個設定頁面的Subclass of選擇UIViewController
感謝讀者ihower回報
在Xcode 4.3已經沒有UIViewController subclass,因此要選擇Objective-C class,
然後於下個設定頁面的Subclass of選擇UIViewController
感謝讀者ihower回報
2012年2月23日 星期四
get specific branch from Xcode
method 1:
1. Window -> Organizer -> Repositories
2. Add Repository
3. select branch , then click clone button
method 2:
3. click Remotes, then select branch
2. Track Branch
1. Window -> Organizer -> Repositories
2. Add Repository
3. select branch , then click clone button
method 2:
1. Window -> Organizer -> Repositories
2. Checkout or Clone Repository
this will clone master
3. click Remotes, then select branch
2012年2月20日 星期一
訂閱:
文章 (Atom)
















































