适用于iPad的iPhone groupTableViewBackgroundColor替代品

时间:2011-12-12 13:29:48

标签: iphone ipad ios5 background-color

我正在iOS 5.0上构建通用导航应用程序。

将视图backgroundcolor设置为如下所示适用于iPhone

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];

但对于iPad,我发现这不能按预期工作。

是否可以使用某种颜色模式在iPad上获得相同的背景?

如果有,请指出一些代码示例或发布一些。

1 个答案:

答案 0 :(得分:1)

最近在处理XCode项目时,我们已经将背景颜色设置为groupTableViewBackgroundColor,它在iPhone上产生细条纹背景,效果很好。此背景与UITableViews上使用的背景相同。

当将此移植到iPad时,UITableViews现在具有纯灰色,而groupTableViewBackgroundColor基本上与[UIColor clearColor]相同。

你会认为抓住UITableView使用的颜色会起作用。我担心它不会,因为事实证明它是一个轻微的渐变,而不是你会注意到的,但是当你改变观点时,你会注意到。

解决此问题的方法是创建CAGradientLayer,并在加载任何其他内容之前将其应用于UIView。 首先,您需要创建一个模拟渐变的函数,下面是我使用的函数:

-(CAGradientLayer *)groupGradientColour {
    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.colors = [NSArray arrayWithObjects:
                    (id)[[UIColor colorWithRed:(0xE2 / 255.0) 
                                         green:(0xE5 / 255.0) 
                                          blue:(0xE9 / 255.0) 
                                         alpha:1.0] CGColor],
                    (id)[[UIColor colorWithRed:(0xD0 / 255.0) 
                                         green:(0xD2 / 255.0) 
                                          blue:(0xD7 / 255.0) 
                                         alpha:1.0] CGColor],
                    nil];
    layer.locations = [NSArray arrayWithObjects:
                       [NSNumber numberWithFloat:0.0f],
                       [NSNumber numberWithFloat:1.0f],
                       nil];
    return layer;
}

然后在viewDidLoad中调用它:

UIView *background = [[UIView alloc] init];
       background.frame = CGRectMake(
                                  0, 
                                  0, 
                                  [[UIScreen mainScreen] applicationFrame].size.width, 
                                  [[UIScreen mainScreen] applicationFrame].size.height);
    CAGradientLayer *gradient = [self groupGradientColour];
    gradient.frame = background.bounds;
    [background.layer insertSublayer:gradient atIndex:0];
    [self.view addView:background atIndex:0];

完成此操作后,您将获得与UITableView相同的渐变。