我有一個奇怪的問題,讓我解釋一下:我使用[UITabBarItem appearance]
更改我的應用程序中所有UITabBarItem
的字體和顏色。這工作像一個魅力和所有UITabBarItem
s正確的樣式。UITabBarItem:覆蓋子類中的默認外觀
的代碼是:
// Set the normal state
[[UITabBarItem appearance] setTitleTextAttributes:
@{
UITextAttributeTextColor: AUIColorObject
} forState:forState:UIControlStateHighlighted];
現在我要覆蓋樣式單一UITabBar
。我擴展了我的UITabBar
子類以處理類似樣式,在我的情況下,可能的值爲RootTabBarControllerStyleDefault
和RootTabBarControllerStyleBox
。
我該如何設置TitleTextAttributes
這個單一UITabBarItem
?我使用子類型UITabBarController
和UITabBar
作爲最大控制。
更詳細的,這是我的工作的解決方法:
1)UITabBar
具有靜態方法來設置的外觀,這樣的:
+ (void)setAppearinaceForStyle:(RootTabBarControllerStyle)_style
{
[[UITabBarItem appearance] setTitleTextAttributes:
@{
UITextAttributeTextColor: (_style == RootTabBarControllerStyleDefault ? UIColor1 : UIColor2)
} forState:UIControlStateHighlighted];
}
2)然後我設置了委託我UITabBarController
執行以下東西:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
[RootTabBar setAppearinaceForStyle:RootTabBarControllerStyleBox];
[tabBarController.tabBar setNeedsDisplay];
for (UITabBarItem *item in tabBarController.tabBar.items)
{
NSString *oldString = item.title;
// Change the title string to force a redraw
[item setTitle:[NSString stringWithFormat:@"%@ ", item.title]];
// Set the title back to its default value
[item setTitle:oldString];
}
[RootTabBar setAppearinaceForStyle:RootTabBarControllerStyleDefault];
}
這樣我就可以設置不同的風格此單UITabBar
,但我希望有AB etter /清潔的方式來做到這一點。
謝謝,這似乎是合法的。現在我有一堂課有兩種「風格」,我想我應該改變設計以符合你的模式。 –