我是iPhone新手,我想知道:各種控件的可擴展性如何?讓我們以按鈕爲例:關於Cocoa Touch Controls的可伸縮性的問題
- 我可以更改背景圖片嗎?
- 當我按下它時,可以讓它變大嗎?
- 我可以更改字體嗎?
- 我可以使用自定義字體嗎?
- 我可以使用按鈕圖形代替文字嗎?
我是iPhone新手,我想知道:各種控件的可擴展性如何?讓我們以按鈕爲例:關於Cocoa Touch Controls的可伸縮性的問題
一般來說,對所有問題都是。您可以像構建其他類一樣繼承構成Cocoa touch控件的各種UI *類,並在適當的方法中添加您自己的自定義功能。唯一棘手的部分是弄清楚你的代碼應該放在哪裏。
讓我們來看看你的UIButton示例,並通過你想要做的事情來完成。
背景圖像
的UIButton的類已經有一個方法setBackgroundImage:forState:
,讓你改變的UIImage按鈕時顯示它在幾個州,如正常,高亮,殘疾人之一,依此類推。
例如,改變圖像的按鈕顯示爲正常背景爲「backgroundImage.png」,這是在應用程序的包中的圖像文件:
//Presuming you have some UIButton *button:
UIImage *bgImage = [UIImage imageNamed:@"backgroundImage.png"];
[button setBackgroundImage:bgImage forState:UIControlStateNormal];
成長較大
您可以通過在管理按鈕的視圖控制器.m文件中添加一個方法來更改按鈕的frame
(UIView的繼承屬性),然後將該方法添加爲按鈕上控件事件的操作。
比方說,你想要按鈕的大小加倍。在viewDidLoad:
或類似的地方,添加以下代碼:
[button addTarget:self action:@selector(growButton)
forControlEvents:UIControlEventTouchDown];
然後創建一個方法growButton
用下面的代碼:
- (void)growButton {
CGRect currentFrame = button.frame;
CGRect newFrame = CGRectMake(currentFrame.origin.x - currentFrame.size.width/2,
currentFrame.origin.y - currentFrame.size.height/2,
currentFrame.size.width * 2,
currentFrame.size.height * 2);
button.frame = newFrame;
}
這同時保持其中心相同的一倍按鈕的大小。 (小心你的按鈕並不在成長,當你這樣做你的視圖的邊緣。)
更改字體
簡單地改變的UIButton的font
屬性 - 它設置爲一個新的實例UIFont,如下例所示:
button.font = [UIFont systemFontOfSize:16.0];
這會將按鈕的字體更改爲大小爲16的系統字體。
自定義字體
這是一個很棘手的問題,因爲我敢肯定你不能加載自己的自定義字體文件,即使你將它們包含在您的應用程序包。但是,您可以使用UIFont的fontWithName:size:
類方法更改控件的默認字體。所有字體名稱均可通過UIFont的familyNames
和fontNamesForFamilyName:
方法獲得。
按鈕圖形代替文字
這是最簡單的五 - 只是不設置按鈕上的文本,而是設置背景圖像UIControlStateNormal
(見上文)。
是的。
1,3,4和5可以使用Interface Builder中按鈕的屬性在無代碼的情況下完成。要更改字體,請使用所選按鈕調出字體面板(Command-T)。
使按鈕增長需要添加單擊時執行的代碼。你可以在你的視圖控制器中放入這樣幾行,並且它應該可以做到這一點:
- (void)buttonClicked:(id)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.4];
[sender setFrame:CGRectMake(--,--,--,--)]; //replace with slightly bigger button frame
[UIView commitAnimations];
}
我只打算將按鈕問題作爲示例,但哇!切換接受的答案。 – RCIX 2009-07-12 00:16:14