根窗口的默认UIColor是什么?

时间:2016-11-03 14:12:37

标签: ios objective-c ipad uicolor

iPad只是我应用的一部分:

enter image description here

enter image description here

enter image description here

我的所有观看次数均使用'默认'背景颜色或:

<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> in my storyboard XML.

我想尝试确定根视图的默认颜色(堆栈底部的视图),即:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;

原因是,我最初在UISplitViewController的细节或右侧覆盖了一个视图,这样当第一次加载细节视图时,我可以在此视图中放置一个启动图像。当用户在拆分视图控制器的左侧导航控制器中选择表格视图单元格时,详细信息将显示在右侧,并且将删除初始视图。

我希望保持UI的外观和感觉一致。我无法将[UIColor groupTableViewBackgroundColor]用于初始视图,因为此颜色是透明的,并将通过下方的详细视图显示。此时的详细视图由一系列标签组成。文本字段。文本字段为空,因为尚未选择拆分视图控制器的左侧导航控制器上的表视图单元格。

所以,我想尝试将启动视图背景颜色设置为与我的应用程序的根视图或窗口相同的值。

我希望第一个屏幕截图右侧的背景颜色与第二个屏幕截图右侧的背景颜色相匹配(见上文)。目前,第一个屏幕截图的背景颜色为白色。我似乎无法用眼睛匹配第二个屏幕截图的灰色,所以我需要以编程方式准确读取这个值。有什么想法吗?

你能告诉我如何将这个值确定为UIColor值吗?

我尝试过:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
        UINavigationController *navigationController = [splitViewController.viewControllers objectAtIndex:0];
        UINavigationController *detailController = [splitViewController.viewControllers objectAtIndex:1];
        UINavigationBar *navBar = navigationController.navigationBar;
        navBar.tintColor = [UIColor colorWithRed: 0.968627f green:0.584314f blue:0.12549f alpha:1.0f];
        UINavigationBar *navBarDetail = detailController.navigationBar;
        navBarDetail.tintColor = [UIColor colorWithRed: 0.968627f green:0.584314f blue:0.12549f alpha:1.0f];
        UIToolbar *toolBar = navigationController.toolbar;
        UIToolbar *toolBarDetail = detailController.toolbar;
        NSLog(@"rootviewcontrollerColor: %@",self.window.backgroundColor);
        splitViewController.delegate = (id)detailController.topViewController;
    }
    else{
        UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
        UINavigationBar *navBar = navController.navigationBar;
        navBar.tintColor = [UIColor colorWithRed: 0.968627f green:0.584314f blue:0.12549f alpha:1.0f];
        UIToolbar *toolBar = navController.toolbar;
    }
    return YES;
}

NSLog的输出是:

2016-11-03 14:06:49.610瑜伽疗法[96158:19a03] rootviewcontrollerColor:(null)

更新

当我尝试:

NSLog(@&#34; rootviewcontrollerColor:%@&#34;,self.window.rootViewController.view.backgroundColor);

我明白了:

UIDeviceWhiteColorSpace 0 1

如何将其转换为UIColor?

更新

让我试试&amp;用另一种方式解释。想象一下,创建一个具有单个UIView的应用程序,默认背景颜色[groupTableViewBackgroundColor]作为根控制器。当您在模拟器中运行代码时,iPad将填充灰色。这种颜色的RGB值是多少?我能想到的最接近的词是描述这种颜色的“系统”窗口颜色&#39; ...

1 个答案:

答案 0 :(得分:0)

CGColorRef colorRef = self.window.rootViewController.view.backgroundColor.CGColor;
NSString *colorString = [CIColor colorWithCGColor:colorRef].stringRepresentation;
NSLog(@"colorString = %@", colorString);

<强>输出:

enter image description here