我正在iOS 5.0上构建通用导航应用程序。
将视图backgroundcolor设置为如下所示适用于iPhone
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
但对于iPad
,我发现这不能按预期工作。
是否可以使用某种颜色模式在iPad
上获得相同的背景?
如果有,请指出一些代码示例或发布一些。
答案 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相同的渐变。