2010-05-27 72 views
5

客戶希望我做某件事,我剛剛檢查過,我確信它不可能。 他要求在Button(UIButton)上放置文本。 (默認狀態配置) 而當用戶點擊它時,文本應該放大。 (Highligted狀態配置) 我已通過選擇Highligted狀態配置進行檢查,然後更改了Interface Builder中的文本大小,但我沒有工作。文本也更改爲默認狀態配置。請告訴我是否有任何方法可以做到這一點。更改UIButton上文本的大小

謝謝!

泰穆爾

回答

10

您可能無法做到這一點在IB,但你一定有一對動作做到這一點。我假設突出顯示的狀態只會在按下按鈕時激活。如果不是這種情況,您可以修改此代碼(當突出顯示的狀態結束時將狀態切換回正常狀態)。

- (IBAction)buttonDown:(id)sender { 
    UIButton *button = (UIButton *)sender; 
    button.titleLabel.font = [UIFont boldSystemFontOfSize:18.0]; 
} 

- (IBAction)buttonUp:(id)sender { 
    UIButton *button = (UIButton *)sender; 
    button.titleLabel.font = [UIFont boldSystemFontOfSize:15.0]; 
} 
+0

日Thnx @warrenm 我們的代碼更加簡單和容易:) – 2010-05-30 09:28:00

+2

'NSString * fontName = button.titleLabel.font.fontName; button.titleLabel.font = [UIFont fontWithName:fontName size:19.0f];' 這將保留當前的Font。 – Michiel 2011-04-18 08:59:08

1

這其實並不難。你需要在你的課堂上創建兩個IBAction,onTouchDown和onTouchUp。也爲您的按鈕創建一個IBOutlet。然後,進入Interface Builder並將按鈕連接到IBOutlet,並將「Touch Down」到「onTouchDown」的動作以及「Touch Up Inside」和「Touch Up Outside」動作連接到「onTouchUp」。

onTouchDown是您設置突出顯示字體的位置。 onTouchUp是您重置按鈕的地方。

你的頭文件最終會看起來像這樣:

@interface TestViewController : UIViewController { 
    UIButton *testButton; 
} 


@property (nonatomic, retain) IBOutlet UIButton *testButton; 
- (IBAction)onTouchDown; 
- (IBAction)onTouchUp; 

現在,這裏的「onTouchDown」功能裏面就是你要做到:

1)存儲的當前尺寸按鈕

2)改變字體大小

3)給按鈕自動調整大小(這是關鍵)

4)中心基於舊的大小按鈕

你應該有最終看起來像這樣的功能:

- (IBAction)onTouchDown:(id)sender 
{ 
    CGRect oldBtnRect = testButton.frame; 
    testButton.titleLabel.font = [UIFont systemFontOfSize:36]; 
    [testButton sizeToFit]; 
    testButton.frame = CGRectMake(testButton.frame.origin.x - ((testButton.frame.size.width - oldBtnRect.size.width)/2), testButton.frame.origin.y - ((testButton.frame.size.height - oldBtnRect.size.height)/2), testButton.frame.size.width, testButton.frame.size.height); 
} 

注意,字體大小爲36

在你的觸摸功能,它會看起來像這樣:

- (IBAction)onTouchUp:(id)sender 
{ 
    CGRect oldBtnRect = testButton.frame; 
    testButton.titleLabel.font = [UIFont systemFontOfSize:15]; 
    [testButton sizeToFit]; 
    testButton.frame = CGRectMake(testButton.frame.origin.x - ((testButton.frame.size.width - oldBtnRect.size.width)/2), testButton.frame.origin.y - ((testButton.frame.size.height - oldBtnRect.size.height)/2), testButton.frame.size.width, testButton.frame.size.height); 
} 

字體大小應該是無論你的默認字體是。在這種情況下,我做了15個。

這應該讓你有一個從中心調整大小而不是調整大小的按鈕。

現在,代碼並不是完美的。這只是你在這裏做什麼的一般想法。我認爲,通過將這些代碼組合到一個函數中並傳遞您希望文本的大小,這對於某些代碼重用來說非常有用。我只是不喜歡做我自己;)

+0

Thnx @Wonderflonium – 2010-05-30 09:27:19

+0

答案已被接受,非常感謝! – 2010-06-01 12:11:18

7
btn.titleLabel.adjustsFontSizeToFitWidth = TRUE; 

所以它調整文本大小,按自動按鍵寬度......