2011-01-14 23 views
10

Witam mam problem dla wielu wymienionych linii do mojego przycisk, który jest zadeklarowane tak:wiele linii w UIButton

button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.titleLabel.font   = [UIFont systemFontOfSize: 12]; 
button.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
button.titleLabel.numberOfLines = 0; 
button.titleLabel.shadowOffset = CGSizeMake (1.0, 0.0); 

[button addTarget:self 
      action:@selector(myButtonClick) 
forControlEvents:UIControlEventTouchDown]; 

button.frame = CGRectMake(0.0, 100.0, 317.0, 100.0); 
[button setTitle:string forState:UIControlStateNormal]; 
button.titleLabel.font   = [UIFont systemFontOfSize: 12]; 
button.titleLabel.text = @"ahoj"; 

NSMutableString *ObratString = [[NSMutableString alloc] initWithString:button.titleLabel.text]; 

[ObratString appendString:@"\n"]; 
[ObratString appendString:@"caw"]; 
[ObratString appendString:@"\n"]; 
[ObratString appendString:@"helllo"]; 
button.titleLabel.text = ObratString; 
[ObratString release]; 
[self.view addSubview:button]; 

Ale w końcu po prostu zobaczyć pierwszą linię. Czy jest jakiś sposób, aby to działało?

+1

Możliwy duplikat http://stackoverflow.com/questions/2265940/ breakline-in-uibutton-title – fresskoma

+0

Zobacz inne pytanie i kilka odpowiedzi na ten temat - [tutaj] (http://stackoverflow.com/questions/604632/how-do-you-add-multi-line-text-to-a -uibutton) –

Odpowiedz

53

Wyświetla tekst z zawartą UILabel. Ustawieniem domyślnym dla zamkniętej etykiety jest wyświetlanie tylko jednego wiersza tekstu. Ta etykieta jest dostępna poprzez właściwość titleLabel i można zrobić wszystko, co można zrobić z normalną etykietą.

Na przykład podejmowania go multi-linie łamane przez słownie:

myButton.titleLabel. numberOfLines = 0; // Dynamic number of lines 
myButton.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
+0

Tak, ale jeśli widzisz, że zrobiłem to jest w moim kodzie, ale to po prostu nie ma wat to – Csabi

+0

Znakomity !!! dzięki :) –

+10

UILineBreakModeWordWrap jest przestarzałe. zamiast tego użyj NSLineBreakByWordWrapping – yzucker

4

Swift wersji dla sprawdzanego odpowiedzi:

myButton.titleLabel?.numberOfLines = 0 
    myButton.titleLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping