2013-10-11 7 views
12

Ich verwandle einige Apps für iOS7 und habe Probleme mit dem Text in Schaltflächen in der Symbolleiste platziert. Sieht so aus, als wäre die Schriftgröße viel größer und eine Größenänderung nicht möglich. So sind meine Texttasten, die in iOS6 so gut gepasst haben, nicht mehr möglich. Der Bildschirm ist nicht breit genug. Ist es möglich, dies anzupassen, ohne die gesamte App neu zu erstellen? Warum diese blöde Veränderung? Ich möchte die Apps aus mehreren anderen Gründen wirklich an iOS7 anpassen.Toolbar Artikel Schriftgröße in iOS7

Antwort

22

Sie können die Titeltextattribute von UIBarItems (einschließlich UIBarButtonItems) mithilfe von setTitleTextAttributes:forState: festlegen. Um zum Beispiel den Titeltext Schriftart für alle UIBarButtonItems zu setzen, können Sie dies tun:

[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:9.0]} forState:UIControlStateNormal]; 

Oder setzen sie nur für eine,

[myBarButton setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:9.0]} forState:UIControlStateNormal]; 

können Sie auch UIBarButtonItems erstellen, die UIButtons enthalten, und haben vollständige Kontrolle darüber, wie diese UIButtons angezeigt werden (Schriftart, Schriftgröße usw.). Dies kann im Interface Builder gemacht werden, indem ein UIButton auf Ihre UIToolbar verschieben oder Code:

UIButton* button = ...; 
UIBarButtonItem* barButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
[toolbar setItems:@[barButton, ...] animated:YES]; 

Beachten Sie, dass Ihre IBActions/segues zum UIButton angeschlossen werden müssen statt der UIBarButtonItem, wenn Sie diesen Ansatz .

+0

Wird das versuchen sehr bald. –

0

Swift:

UIToolbar.appearance().barTintColor = TOOLBAR_BACKGROUND_COLOR 

if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) { 
     UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal) 

    }