2010-02-15 60 views
2

在下面的按鈕中是一個地址顯示。我的問題是地址是非常長的,我怎麼能得到兩個變量之間的按鈕的標題breakline?UIButton標題中的斷點

NSString *sitz = map.kordinate.herkunft; 
NSString *strasse = map.kordinate.strasse; 
NSString *strasseMitKomma = [strasse stringByAppendingString:@","]; 
NSString *fertigesSitzFeld = [strasseMitKomma stringByAppendingString:sitz]; 
UIButton *firmensitz = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

breakline必須介於strasseMitKomma和sitz之間?

謝謝你幫

回答

9

您必須將UIButton的內部配置的UILabel支持多行。
你可以這樣說:

NSString *address; 

    address = [NSString stringWithFormat:@"%@,\n%@", @"street name", @"city name"]; // Note the \n after the comma, that will give you a new line 

    addressButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 


    [addressButton.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; // Enabling multiple line in a UIButton by setting the line break mode 
    [addressButton.titleLabel setTextAlignment:UITextAlignmentCenter]; 

    [addressButton setTitle:address forState:UIControlStateNormal]; 

順便說一句,你並不需要那麼多的NSString變量。您可以將新字符串的結果放入您已使用的NSString變量中。
看看我的答案的第一行中的方法stringWithFormat。閱讀NSString documentation瞭解更多詳情。

+4

UILineBreakModeCharacterWrap已棄用(iOS 6.0)。改爲使用NSLineBreakByCharWrapping。 – Arjan

0

它適用於iOS9。

[_butNoReceipt.titleLabel setLineBreakMode:NSLineBreakByCharWrapping]; 
[_butNoReceipt.titleLabel setTextAlignment:NSTextAlignmentCenter]; 
[_butNoReceipt setTitle:btnTest forState:UIControlStateNormal];