2012年5月30日 星期三

Facebook粉絲團分析

153個不同的人看到。
其中10個是從朋友的wall上看到。


粉絲團的成員裡,有42%的人看到。



2012年5月26日 星期六

蘋果的好,只有嘗過的人才懂 - Facebook分享解析

在App裡加入Facebook分享的功能,對於像彼得潘這樣的Facebook重度使用者而言,十分的重要。幸運地,Facebook已經幫iOS貼心地提供了相關的SDK,只要從https://github.com/facebook/facebook-ios-sdk下載SDK,在App裡加入Facebook分享功能,只不過是彈指之間就能輕鬆搞定的小事。針對分享,Facebook定義了許多不同的參數,讓我們可以天馬行空地發揮想像力,組合出最有吸引力的塗鴉牆留言。以下彼得潘實地分享一篇"蘋果的好,只有嘗過的人才懂", 描繪各個參數所造成的不同效果。




結果:

 

2012年5月20日 星期日

讀心術 - 看透App內部的檔案明細

1. 打開Organizer視窗

2. 點選彼得潘連接至Mac上的iPhone


3. 點選Applications,列出App清單。



4. 於App清單裡找尋目標,MillionKissInParis



此時下方的區塊將顯示App裡的檔案,選擇檔案後,接下Download按鈕即可將檔案另存至Mac

支援tab的Xcode

Xcode 4終於支援tab了。
只要按下Command + t ,即可建立新的tab。


2012年5月19日 星期六

縮放自如的熊大王 - ScrollView的縮放

愛麗絲夢遊仙境裡的Alice喝了神奇藥水後會在一瞬間放大縮小,距離這本書的出版已經一百多年了,放大縮小的藥水仍舊沒有發明,但是iPhone神奇的多點觸碰,已經搶先一步實現了縮放的功能。即便螢幕比我們的手掌還小,然而只要以小小的手指頭做縮放的手勢,即可實現圖片的縮放功能。透過內建的UIScrollView元件,圖片的縮放其實只是雕蟲小技,不足為外人道也。接下來就讓威風凜凜的森林熊大王以牠的特寫圖片為各位示範縮放的效果吧 。( 感謝藝術家朋友Jorinde Jankowski (張友鷦)提供可愛的熊大王)

1. 建立Single View Application專案 ZoomScrollViewTest。

2.  在畫面上添加佔滿螢幕的Scroll View和Image View。


3. 設定圖片的縮放比例
 


於Scroll View的Attributes Inspector頁面,設定圖片的縮放比例。如上圖所示,我們將Max設為2,如此到時候圖片放大的極限將為Image View尺寸的2倍。Min設為0.5,圖片縮小的極限將為Image View尺寸的一半。

4. 設定ZoomScrollViewTestViewController為scroll view的delegate。


到時候要實現圖片的縮放,還需要controller化身代理人,實作某個宣告於UIScrollViewDelegate的method。

5.  將image view連結至ZoomScrollViewTestViewController,宣告property imageView。

 

6.   遵從UIScrollViewDelegate protocol。 (ZoomScrollViewTestViewController.h)


@interface ZoomScrollViewTestViewController : UIViewController
<UIScrollViewDelegate>

7. 定義UIScrollViewDelegate的viewForZoomingInScrollView: method。




說明:
回傳欲縮放的UI元件。就像Alice在童話故事裡被選定具有放大縮小的天命,我們也必須指定誰具有天命。在這裡我們指定熊大王具有縮放的能力。可以放大,熊大王才能夠保護森林,可以縮小,熊大王才可以躲避獵人的追補。若是沒有實作此method,或是回傳nil,到頭來將還是一場空,使用者的手指再怎麼於畫面上縮放,熊大王還是無動於衷。

執行App:

正常尺寸的熊大王


為了保護森林子民放大的熊大王

為了躲避獵人追補縮小的熊大王



ps: 如果想在模擬器上測試縮放,感受熊大王的威風也是ok的。只要按住option鍵,即可以滑鼠模擬縮放手勢。

2012年5月18日 星期五

福爾摩斯的複製 - DVD備份

終於, BBC的福爾摩斯落入了彼得潘的手裡。雖然不是死而復生的Sherlock,但也是原汁原味,合法管道取得的DVD。然而天長地久有時盡,租了片總是要還的。每天忙著寫App的彼得潘實在來不及看完,因此只好借助Mac上強大的"Disk Utility" ,施展DVD複製大法。Disk Utitlity不只對硬碟有一手,對於DVD也稱得上略懂。


1.  插入BBC Sherlock DVD




插入DVD後,Mac立馬貼心地自動開始播放,趕緊關掉吧,免得看了入迷停不下來,誤了大事。


2. 啟動Disk Utility (磁碟工具程式)
    從Launchpad裡找到Utilities,然後再從中找到Disk Utility。








3. 在Disk Utility的主畫面,於左邊的清單裡找到DVD的圖示SuperDrive。想當然爾,它就是我們的獵物,福爾摩斯。




4.  點選上方Icon列裡的New Image,開始複製福爾摩斯。




在這個地方有兩個欄位需特別注意,請輸入以下設定。
(1) Image Format:  DVD/CD master
(2) Encryption: none




5.  終於這個世界上,有了第二個和福爾摩斯一樣聰明的人。哦,說錯了,是福爾摩斯DVD的備份啦。有了Sherlock.cdr,彼得潘終於可以即時還片,等App上架後再來和福爾摩斯棋逢敵手,比賽誰先抓到凶手。




6.  重現福爾摩斯的分身 - 播放cdr檔 

如何開啟cdr呢? 很簡單,只要雙擊Sherlock.cdr,它馬上變身為硬碟。所有關於福爾摩斯的私密故事,都藏在此顆硬碟裡。這時候只要再啟動DVD Player,即可好好欣賞福爾摩斯如何於21世紀大顯神通。







2012年5月17日 星期四

和蘋果的第一次親密接觸

模仿"第一次的親密接觸"的即興創作 

如果我會作詞作曲,我就能成為創作歌手。
我有一絲音感嗎?沒有。
所以,很可惜,我只能當歌手的朋友。

如果我有打不死的小宇宙,我就能成為桌球國手。
我有燃燒小宇宙般地練球嗎?沒有。
所以,很遺憾,我只能打系隊。

如果給我一天一個App的負荷,也澆不熄我對蘋果的熱情。
一天能夠完成一個App嗎? 可以。
所以,是的,我是愛瘋一切為蘋果的彼得潘。

2012年5月11日 星期五

吸引人氣的Facebook Like Box

Facebook的流行,使得粉絲團化身為宣傳的第一線。然而,網站和blog還是有它們存在的的價值,畢竟真正的文章內容還是得擺放於其中。因此,為了推廣App,彼得潘同時成立blog和Facebook粉絲團是不得不然之事。

大家都知道要用粉絲團來宣傳,但是如何快速地增加Like數,已經成了一門深奧的藝術。接下來彼得潘將介紹一個最簡單的宣傳方法,利用Facebook的Like Box,當有緣人經由google不經意誤上賊船,來到我們的網站或blog時,將看到我們精心特製的粉絲團廣告,誘惑著他Like吧!

Step 1: 連到Like Box網頁


Step 2: 設計粉絲團廣告 



(1) Facebook Page URL:  粉絲團網址。
(2) Show Faces: 是否秀出粉絲們可愛的臉蛋
(3) Stream: 是否顯示最近於粉絲團發表的文章

Step 3: 點選Get Code按鈕,取得欲張貼於blog的程式碼



強大的Like Box支援多種格式,在此彼得潘選擇IFRAME格式,將產生的程式碼複製一份,準備到時候於blog張貼。


Step 4: 張貼剛剛複製的程式碼於blog


成果驗收:

 現在彼得潘的blog也有一個美侖美煥的粉絲團廣告了






2012年5月7日 星期一

左手學App,右手學英文的youtube播放

更新:
此篇文章介紹的方法利用UIWebView播放youtube影片,
彼得潘的另一篇文章,播放天生愛情狂"張智霖"的Youtube MV
利用LBYouTubeView播放影片,效果更好,
建議採用LBYouTubeView的做法。

從App裡播放YouTube影片其實很簡單,
接下來彼得潘將以好朋友沈老師生動有趣的英文教學影片為例子,
讓大家學習消失多年的左右互搏之術,左手學App,右手學英文。


1. 建立Single View Application專案YoutubeTest

2. 定義播放youtube影片的addYouTubeVideoWebView: method


說明
為了播放youtube影片,我們需要UIWebView幫忙。UIWebView不只精通於網頁,同時也擅長youtube。利用html的iframe標籤,即可將youtube影片置於UIWebView上。


3. 傳入youtube影片的URL

呼叫剛剛定義的addYouTubeVideoWebView: method,傳入youtube影片的URL,即可播放影片。以沈老師的教學影片為例,其URL原本為http://www.youtube.com/watch?v=ESo7GBC_em8&feature=youtu.be,但我們想要在html的iframe裡播放,必須採用embed URL。
此URL必須以http://www.youtube.com/embed/開頭,然後再於後頭接上ESo7GBC_em8,變為http://www.youtube.com/embed/ESo7GBC_em8


執行App:







Youtube影片完美地播放,就連水平全螢幕播放也難不倒它。大家快點一起加入左手學App,右手學英文的幸福旅程吧!






2012年5月3日 星期四

忘了@2x的猶抱琵琶半遮面

iOS的retina提供了令人驚豔的超高解析度,讓iPhone從320*480變身為640*960, iPad從1024 * 768 變身為 2048 * 1536。然而,更令身為程式設計師的我們開心的,原來的程式碼我們一行也不用改,只要將高解析度的圖片檔名加上@2x,系統即能聰明地區分不同解析度的圖片。


比方以上這張百吻巴黎楊雅晴 kiss圖片,我們只要分別將低解析度的kiss.jpg和高解度的kiss@2x.jpg加入專案,當以[UIImage imageNamed:@"kiss.jpg"]建立image物件時,若iPhone本身具有retina螢幕,系統即會聰明地採用@2x結尾的圖片。


不過若是我們將高解度的圖片加入專案,但卻忘了於檔名裡加上@2x,將讓系統產生嚴重的誤解。


如上圖所示,圖片裡的帥哥美女都只露出了半張臉,仿佛古時候的猶抱琵琶半遮面。
造成圖片無法完整顯示其實真的不太容易,需要同時滿足以下三點:
1.將UIImageView物件的contentMode設為UIViewContentModeTop
2.高解析度的圖片檔名忘了補上@2x
3.具有retina能力的螢幕

這是因為當有加上@2x時,若圖片原來是200 * 200 (pixel),系統會將它除以2,設定圖片的大小為100*100 (point)。但若我們不幸忘了加上@2x,系統將不幸地把圖片的大小設為200 * 200 (point),而在retina螢幕上,200 * 200 (point) 等同於 400 * 400 (pixel),所以圖片被放大,幸福的kiss也就只露出了一半。

另外有一點值得注意的,如果利用initWithContentsOfFile建立UIImage物件,此時傳入的path可以為沒有@2x的圖檔路徑,當螢幕為retina時,系統同樣會聰明地找尋@2x的檔案 。但若只有@2x的檔案,但卻沒有低解析度的普通檔案,此時利用NSBundle的pathForResource取得的路徑將是空的,造成找不到檔案,無法建立UIImage物件。






2012年5月1日 星期二

產生物件的類別method

很多時候,我們會另外定義類別method來快速地生成物件。比方於類別Animal裡定義create method。


有一點十分特別, 在類別method裡我們竟看到self的蹤跡。此時self代表類別物件。比方我們另外有個繼承自Animal的Dog類別,當我們呼叫以下程式碼時
[Dog Create];
最後將呼叫定義於Animal裡create method,而此時的self將是Dog類別,因此我們才能順利建出Dog物件,而不是四不像的Animal物件。

關於產生物件的類別method,還有一點值得注意,當牽扯到ARC時,回傳的物件是否由autorelease pool管理,取決於method名稱的開頭。只要method名稱不是以alloc, new, copy開頭時,回傳的物件即由autorelease pool統一管理。


因此,在以上的例子裡,我們將看到在viewDidLoad end被印出前,allocByGod,copyByGod, newByGod建立的物件都先一步結束生命。唯有createByGod建立的物件一息尚存,還被autorelease pool保護著,因此在viewDidLoad end後才結束生命。