2012年12月24日 星期一

Image Buttons, and when there are too many

延續計算機的習題, 今天的任務是要把其他的按鈕加到程式內。

要建立像這樣子的按鈕,我們可以使用UIButton,指定他的buttonface image,以及highlight image。由於button不是正方形,而且我們希望以後調整button大小時不需要重新製作image files,所以同樣的我們必須使用caps的方式來讓iOS幫我們自動調整影像大小。

建立一個image button的sample code大概是像這個樣子

[see sample code here]

注意到我們必須使用resizableImageWithCapInsets的方式來load image。另外PNG image檔案內必須定義外框的alpha channel,以便可以做出非正方形的效果。

OK,現在我們知道怎麼做出有影像的buttons了,可是接下來的問題是,畫面上這麼多個buttons,難道真的要用Interface Builder一個一個ctrl-drag到ViewController內嗎?這樣子程式不是變得很亂嗎?

一個很簡單的方法是,從Interface Builder內指定每個button的unique tag。Tag是一個number,所以我們可以把它當成Win32的control ID來使用,然後從程式內透過以下的方式來取得這個control:


// Return the button with the specified ID
//
- (UIButton*) getButton:(int)idButton
{
    return [self.view viewWithTag:idButton];
}

這樣子一來程式就變得比較乾淨了!

另外在設計button的內容時遇到了一個問題:怎麼設定 +,-, *, /, 這幾個button?如果是用一般的ASCII字元的話,看起來很難看。難道要自己畫不成?

類似的問題在StackOverflow上也可以找到解答:從Mac的menu bar上,click Language icon,在popup menu內會看到Show Character Viewer的選項,從這裡面就可以找到很多特殊字元,直接double click,就可以把對應的unicode paste到IB內了。

完成品如下:





沒有留言:

張貼留言