2010-05-27 17 views
5

Klient chce, żebym coś zrobił, właśnie sprawdziłem i jestem pewien, że nie jest to możliwe. Poprosił o umieszczenie tekstu na przycisku (UIButton). (Domyślna konfiguracja stanu) A kiedy użytkownik kliknie, tekst powinien się powiększyć. (Highligted State Configuration) Sprawdziłem, wybierając opcję Highligted State Configuration, a następnie zmieniłem rozmiar tekstu w Interface Builder, ale nie działałem. Tekst zmieniono również na domyślną konfigurację stanu. Proszę mi powiedzieć, czy jest jakikolwiek sposób to zrobić.Zmiana rozmiaru tekstu na Uibuttonie

Dzięki!

Taimur

Odpowiedz

10

Może nie być w stanie to zrobić w IB, ale z pewnością można to zrobić z parą działań. Zakładam, że podświetlony stan będzie aktywny tylko po naciśnięciu przycisku. Możesz zmodyfikować ten kod, jeśli tak nie jest (aby przełączyć stan z powrotem na normalny, gdy kończy się podświetlony stan).

- (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 ur kod jest znacznie bardziej proste i łatwe :) –

+2

'NSString * fontName = button.titleLabel.font.fontName; button.titleLabel.font = [UIFont fontWithName: fontName size: 19,0f]; ' Zachowuje bieżącą czcionkę. – Michiel

1

To naprawdę nie jest trudne. Musisz utworzyć dwie IBActions w swojej klasie, onTouchDown i onTouchUp. Utwórz również IBOutlet dla swojego przycisku. Następnie przejdź do Interface Builder i podłącz przycisk do IBOutlet i podłącz akcję "Touch Down" do "onTouchDown", a czynności do "Touch Up Inside" i "Touch Up Outside" do "onTouchUp".

onTouchDown to miejsce, w którym ustawisz podświetloną czcionkę. onTouchUp to miejsce, w którym zresetujesz swój przycisk.

Plik nagłówka skończy się szuka czegoś takiego:

@interface TestViewController : UIViewController { 
    UIButton *testButton; 
} 


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

Teraz wewnątrz funkcji „onTouchDown” Oto, co masz zamiar zrobić:

1) zachować obecne wymiary przycisk

2) Zmień rozmiar czcionki

3) Powiedz przycisk auto-resize (to jest klucz)

4) Centrum przycisk na podstawie starego rozmiaru

powinien mieć funkcję, która kończy się szuka czegoś takiego:

- (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); 
} 

Uwaga, rozmiar czcionki 36.

W to będzie wyglądać mniej więcej tak:

- (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); 
} 

Rozmiar czcionki powinien być zgodny z domyślną czcionką . W tym przypadku zrobiłem to 15.

To powinno Ci przycisk, który zmienia rozmiar z centrum, a nie tylko zmiana rozmiaru.

Kod nie jest idealny. To tylko ogólna idea tego, co tu robisz. Myślę, że jest to świetny kandydat do ponownego użycia kodu, łącząc je w jedną funkcję i określając, jaki rozmiar ma być tekst.Po prostu nie czuję się jak robi to sam;)

+0

Thnx @Wonderflonium –

+0

Odpowiedź jest akceptowana, Wielkie dzięki! –

7
btn.titleLabel.adjustsFontSizeToFitWidth = TRUE; 

więc dostosować rozmiar tekstu wg szerokości przycisku automatycznie ......