Недавно при работе над проектом 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.