Я хочу использовать градиент в качестве фона для UIView. Я знаю, что это обычно делается с изображениями и backgroundColor
. Однако я хочу узнать, как это сделать в коде. Использование https://stackoverflow.com/a/1931498/99683 Я могу создать программный код UIView
и дать ему слой градиента. Это отлично работает.UIView Background Gradient With Interface Builder View
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 340, 280, 100)];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor], (id)[[UIColor yellowColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:view];
Однако, если я поместил вид в Interface Builder (с установленным фоном для очистки) и попробую то же самое, что градиент никогда не появится.
CAGradientLayer *gradient2 = [CAGradientLayer layer];
gradient2.frame = self.containerView.bounds;
gradient2.colors = [NSArray arrayWithObjects:(id)[[UIColor blueColor] CGColor], (id)[[UIColor greenColor] CGColor], nil];
[self.containerView.layer insertSublayer:gradient2 atIndex:0];
Есть ли что-то еще, что мне нужно сделать в IB или код, чтобы сделать эту работу?
Hi. Что такое «я» здесь? UITableViewCell? Моя лучшая рекомендация - реализовать UIView и сделать рисунок в методе drawRect :), а затем использовать этот подкласс UIView в вашем XIB, если вы хотите, чтобы это было плохо :-), но это всего лишь личная рекомендация, я не большой поклонник от IB. – Vinzius
'self' является контроллером вида, а' containerView' является выходом IB для объекта 'UIView'. Да, сейчас я хочу сделать это скорее как академическое упражнение, чем что-либо еще. Мне придется попробовать подкласс и метод 'drawRect'. –
Подкласс и метод 'drawRect' отлично работают для меня BTW. Спасибо @Vinzius! Все еще любопытно узнать, есть ли более простой способ сделать градиенты с просмотрами IB. :) –