2010年10月12日 星期二

2010年10月8日 星期五

View Transition Tutorial

在 iPhone App 上 View 和 View 之間的轉換非常常見, 這邊提供一個簡單範例教導如何在 View 之間做不同效果的轉換.

開始此範例之前, 必須先準備兩個不同的 view (這部份就不額外說明), 以筆者的例子而言, 有兩個 View, 一個是 OneView, 另一個則是 AnotherView, 在這兩個 View 裡面都包含了單一個 Button, 當點擊之後就可以在這兩個 View  之間做轉換.

真正要寫 Transition 的 code 其實很簡單, 以筆者的例子而言, 有兩種轉換方式, 其程式碼如下


-(void)FlipAnotherFromOne{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES];
    [oneController.view removeFromSuperview];
    [window addSubview:anotherController.view];
    [UIView commitAnimations];        
}

-(void)FlipOneFromAnother{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:window cache:YES];
    [anotherController.view removeFromSuperview];
    [window addSubview:oneController.view];
    [UIView commitAnimations];        
}

上面程式碼中的 setAnimationTransition 在 iPhone 裡面定義如下:

typedef enum {
    UIViewAnimationTransitionNone,
    UIViewAnimationTransitionFlipFromLeft,
    UIViewAnimationTransitionFlipFromRight,
    UIViewAnimationTransitionCurlUp,
    UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;


所以若需要不同的效果只要填上自己所需要的參數即可.

需要完整的範例可到 這裡 下載

2010年10月7日 星期四

Interface Builder Tutorial - 1

一般開發者在開發界面程式時, 都會需要借助視覺化的工具來縮短開發時間, 例如最常看到的如 Borland C++ Builder (BCB). 這類工具主要概念是"所見即所得" , 簡單的說就是一些常看到的使用者介面如 button, label, textfield, ....等,  都可以透過 BCB 等這類工具讓開發者直接用拖曳元件的方式來快速達成開發目標, 當然這些工具都是屬於 windows 的, 那究竟在 iPhone Programming 的領域中是否也有這類工具呢? 不怎麼貼心的 Apple 當然也提供了視覺化開發工具 "Interface Builder".
在筆者使用的這段時間內, 發現到雖然 Interface Builder 可以快速縮短開發時間, 這點的確是不容置疑的, 但在使用上卻發現許多不直覺的地方 (相對於 windows 上的視覺化開發工具而言), 不過整體來說是還可以接受的範圍.
要開始使用 Interface Builder 之前, 你可以先用 Xcode 新建一新的 iPhone Project, 建立之後會在左側 Project tree 裡看到一個屬於 Interface Builder 的檔案"MainWindow.xib"


 直接點擊此檔案開啓 Interface Builder, 在裡面會看到幾個基本的元件 .xib window,



Inspector



Libaray,


我們要做的第一步驟就是直接編輯  window 視窗, 首先直接點擊 .xib 裡的 window, 且在右方 Library 裡找到 "Label" 和 "Round Rect Button", 並直接將她們拖曳到 window 畫面中, 分別編輯上面的顯示字串, 完成時大概會有類似下面的圖示

完成之後, 接下來就是要開始編寫 button & label 相關的 code 了, 在 AppDelegate.h 裡加入 class member & function


IBOutlet UILabel *text;


-(void) BtnAction:(id) sender;


並且在 AppDelegate.m 裡面實作 BtnAction, 我們在裡面實作了一個非常簡單的功能, 就是當點擊時, 會去更改 Label 的顯示字串


-(void) BtnAction:(id) sender{
    [text setText:@"sYou Pressed!"];
}

當完成上述動作之後, 最後我們要做的就是將 UI 和 code 之間做個"關連", 這步驟就是和一般 window 最大不同的地方, 一般若漏掉"關連"這動作, 你所寫的 code 就不會反應到畫面上, 而"關連"的方式很簡單, 我們再次打開 MainWindow.xib, 然後在 MainWindow.xib 視窗裡選擇 xxxx_AppDelegate,此時就會在 Connection Inspector 裡看到剛剛所新增的 text & BtnAction


"關連" 這動作只要你按住 text 右方的圈圈, 並拖拉至剛剛所產生的 Label 即可, 而 BtnAction 也是一樣, 拖拉到 Button 的位置上, 但是因為觸發 Button 的方式有很多種, 所以當你拖曳過去之後, Interface Builder 會要你選擇觸發方式, 我們此時選 "Touch Up Inside"


完成之後, 儲存, 編譯, 執行, 應該就可以看到此次練習的成果了.

完整範例可以到 這裡 下載

2010年10月4日 星期一

HealthyDiet Update version 1.0.1

HealthyDiet 上架之後, 大家給了些不錯的意見, 有把這些建議加入程式, 並且也修正了一個跳出的 bug, 詳細如下:
1. 新增信件備份帳號名稱密碼 
2. 修正點選活動量大時會跳出問題 
3. 新增份量設定
4. 新增 HealthyDietLite 免費試用版本











ipa 上傳失敗問題

今天為了更新一些東西需要上傳 binary 到 apple, 但是不知道為什麼又出現


Application failed codesign verification

看到的時後差點沒吐血!!!! 明明昨天就好好的, 上個班回來又變這樣!!!
研究了好久發現一個可以正常 sign app 的方式了, 不過這方是是基於憑證都設定正確的情況下才有用(一定會有人問, 為什麼憑證都設定正確卻還不過, 老實說, 我也不知道, 我只知到心中一百個 OOXX)
1. 第一次直接編譯產生 .ipa
2. 將 Entitlements.plist 砍掉
3. 再次新增 Entitlements.plist
4. 重新編譯, 重點來了!! 要編譯第二次時, 不能 clean project, 只需要把第一次產生的.ipa 砍掉就好(別問我為什麼, 我也不知道)
依照上面步驟編譯完成時, 應該可以在 build log 看到如下訊息

/Users/tixlo/Data/iPhone/GameDev/HealthyDiet/build/Distribution-iphoneos/HealthyDiet.app: replacing existing signature

此時的 .ipa 就可以正常上傳了

以上就筆者個人開發環境而言是可以正常運作的, 若你真的對這錯誤走投無路的話, 不訪試試看這方是

2010年10月2日 星期六

Apploader 上傳 ipa 問題

原本上載 ipa 檔已經都搞定, 但是昨天晚上要再次上傳時又發生
application failed codesign verification ....... submission certification
完全不知道為什麼, 照著之前的解決步驟也無法順利上傳, 又試了整個晚上到今天忽然又可以完整的上傳, 過程中嘗試很多方式, 也不知道到底是哪個步驟完整解決此問題, 所以乾脆就直接把有嘗試過的方法都列出來, 以後再遇到的時候再一個一個測試 Orz
1. 將 Entitlements.plist 刪除並重新新增至 Project 根目錄
2. 修改 Project .pbxproj 檔案, 內容如下:


3. 將之前安裝的 certification & key 全部刪除,  把整個 key 的產生, certification 的上傳, Profile 設定步驟全部砍掉重練(keychain & iPhone Provision 都砍掉), 照著步驟重新安裝 certification / provision

依筆者的情況, 依照上面這些步驟"亂試" 結果試可以正常運作的, 不確定其他人是否也可以依此方式解決問題 Orz.., 弄到目前只有一個想法
"Apple 阿 Apple 阿, 我真是不懂你阿!!!"

2010年10月1日 星期五

[iPhone] HealthyDiet


Description
在現今食物熱量普遍都偏高的情況下,導致體重的控制變成是一件非常不容易的事情,要如何有效且健康的維持體重,幾乎變成了全民都需要留意的事情,HealthyDiet 提供了一個科學化的紀錄方式,讓每個使用者都可以精準的控制每天吃進肚子的熱量,根據統計少/多攝取 7700 大卡就平均會瘦/胖 1 kg,有鑒於此,對於每日熱量的控管就變的相當重要,HealthyDiet 可以協助你達上熱量控管的目的,而她所提供的功能有
自動計算個人每天所需要的熱量,理想體重以及BMI可以自行設定所要達到的目標體重,不管是增重還是減肥,HealthyDiet 會根據你所設定的目標(包含目標體重,預計多久達成,本身活動系數),來計算每日應當攝取的熱量內建多達2千多種食物熱量表分類多達 23 種,其中包含大家最長看到的麥當勞,吉野家,肯德基,爭鮮壽司,麵包類,五穀類,飲料,和各個便利商店因為中國人食物樣式太多樣話,所以也提供讓你自建食譜每個月會有熱量曲線圖,能夠讓你更精準的瞭解每個月的熱量攝取情形








Lite 免費版本已經上架, HealthyDietLite