在我的tableview标题中设置全局色调并未按预期着色,并且似乎是一个错误。
当我加载视图时,我得到了
右侧保留默认颜色,但如果我再次按下右侧按钮,则会设置为您的预期颜色:
此问题仅适用于导航栏中的分段控件。当控件嵌入“普通”视图时,全局着色有效。
我有一个解决问题的工作。存在,我设置了正确的控制,然后在viewDidLoad中返回左侧。
这是一个错误吗?还是我错过了什么?感谢。
添加:我在故事板中设置全局色调
答案 0 :(得分:1)
这不是一个错误。全局着色适用于对象,其类用于着色。如果为类声明了特定的色调方案,那么属于该类的所有控件都将遵循类色调方案,无论它们被添加到哪个视图中。
我试过实现这个&我在这里使用此代码。
在UINavigationBar
appDelegate
的全局着色
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
...
...
}
我正在UISegmentControl
以及UINavigationBar
tableView.tableHeaderView
方法中添加viewDidLoad
。
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:@[@"One", @"Two"]];
segment.frame = CGRectMake(self.view.frame.size.width/2-75, 0, 150, 40);
[self.navigationController.navigationBar addSubview:segment];
UISegmentedControl *tableSegment = [[UISegmentedControl alloc]initWithItems:@[@"One", @"Two"]];
tableSegment.frame = CGRectMake(self.view.frame.size.width/2-75, 0, 150, 40);
[self.navigationController.navigationBar addSubview:tableSegment];
tableView.tableHeaderView = tableSegment;
这产生以下结果。如果将UISegmentControl
的全局色调作为SubView添加到UINavigationBar
容器中,UINavigationBar
将会着色,否则,它将采用UINavigationBar
之外的默认蓝色比如在UITableView
现在为UISegmentedControl
添加特定的色调颜色
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
[[UISegmentedControl appearance] setTintColor:[UIColor brownColor]];
...
...
}
``
它产生了这一点,UISegmentControl
现在受其全局色调的影响,无论其位置如何(如UINavigationBar
& UITableViewHeader
中的早期版本)。它是
然而,UInavigationBar
的TinitColor仍然适用于leftBarButtonItem
,因为没有为UIBarButtonItem
声明的全局色调方案,因此它正在采用tintColor
的{{1}}它被添加到容器中。
向Clarifying添加更多代码
UISegmentedControl
&的全局色调没有其他全球着色。 [[UISegmentedControl appearance] setTintColor:[UIColor colorWithRed:39.0/255.0 green:64.0/255.0 blue:112.0/255.0 alpha:1]];
结果:您可以看到段控件,但请注意backButton,其默认色调为UINavigationBar
UISegmentedControl
&的全局色调UINavigationBar
[[UISegmentedControl appearance] setTintColor:[UIColor colorWithRed:39.0/255.0 green:64.0/255.0 blue:112.0/255.0 alpha:1]];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:39.0/255.0 green:64.0/255.0 blue:112.0/255.0 alpha:1]];
结果:您可以看到分段控制色调&还要注意backButton,它的全局色调为UINavigationBar
我还做了UISegmentedControl
的默认选择。如果您使用此代码获得任何其他结果,那么您的代码中必定会发生一些额外的事情。
我希望有所帮助。
答案 1 :(得分:1)
我最近在Xcode 5.0.2中有一个很大的问题。当tintColor
的继承突然停止正常工作时,我正在玩各种项目的 Global Tint 和 Tint 。我最终手动清理了Storyboard的XML
文件以解决问题。
如果您在应用中没有做任何UIAppearance
魔术,那对我来说肯定是个错误。