Как получить повторяющийся линейный градиент в Objective C или Swift? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь найти решение использовать повторяющийся линейный градиент в Objective C / Swift для приложения для iPhone. Для линейного градиента мы обычно используем CAGradientLayer, но для повторения линейного градиента я не мог найти решение. Я ищу градиент, показанный в ссылке ниже

https://developer.mozilla.org/en-US/docs/Web/CSS/repeating-linear-gradient#Zebra_stripes

Заранее спасибо за помощь

1 Ответ

1 голос
/ 05 июля 2019

Вы имеете в виду несколько чередующихся градиентов?

CAGradientLayer использует собственный метод системы, добавив несколько CGColorRef настроек, вы также можете установить их locations (интервал), startPoint endPoint (направление). Это официальный документ

Если вы хотите добавить 5 пар желто-синих градиентов, вы должны сделать это:

UIView *cuntomView = [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 275, 500)];
[self.view addSubview:cuntomView];

CAGradientLayer *gradLayer = [CAGradientLayer layer];
gradLayer.frame = cuntomView.bounds;
gradLayer.locations = @[@0,@0.1,@0.2,@0.3,@0.4,@0.5,@0.6,@0.7,@0.8,@0.9,@1];
gradLayer.colors = @[(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor];

[cuntomView.layer addSublayer:gradLayer];

enter image description here

Если вы хотите изменить направление градиента, вам следует добавить startPoint и endPoint к вашему коду.

UIView *cuntomView = [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 275, 500)];
[self.view addSubview:cuntomView];

CAGradientLayer *gradLayer = [CAGradientLayer layer];
gradLayer.frame = cuntomView.bounds;
gradLayer.startPoint = CGPointMake(0, 0);
gradLayer.endPoint = CGPointMake(1, 1);
gradLayer.locations = @[@0,@0.1,@0.2,@0.3,@0.4,@0.5,@0.6,@0.7,@0.8,@0.9,@1];
gradLayer.colors = @[(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor];

[cuntomView.layer addSublayer:gradLayer];

enter image description here

Если вы хотите контролировать определенное положение градиента, вы должны установить значение в местах. :

UIView *cuntomView = [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 275, 500)];
[self.view addSubview:cuntomView];

CAGradientLayer *gradLayer = [CAGradientLayer layer];
gradLayer.frame = cuntomView.bounds;
gradLayer.startPoint = CGPointMake(0, 0);
gradLayer.endPoint = CGPointMake(1, 1);
gradLayer.locations = @[@0,@0.05,@0.1,@0.15,@0.2,@0.25,@0.3,@0.35,@0.8,@0.9,@1];
gradLayer.colors = @[(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor];

[cuntomView.layer addSublayer:gradLayer];

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...