CAGradientLayer отображается сплошным цветом - PullRequest
1 голос
/ 27 марта 2011

Я пытаюсь установить градиентный фон на виде, но мой код ниже делает UIView сплошным черным. Если я изменю whiteColor на greenColor, градиент отображается правильно. Изменение backgroundColor слоя на greenColor делает вид сплошным зеленым.

Я предполагаю, что я имею дело с какой-то проблемой прозрачности, но я не могу решить эту проблему.

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:
                                     (id)[[UIColor whiteColor] CGColor],
                                     (id)[[UIColor blackColor] CGColor], nil];
gradientLayer.frame = CGRectMake(0, 0, 1, someView.frame.size.height);

UIGraphicsBeginImageContext(CGSizeMake(1, someView.frame.size.height));
[gradientLayer renderInContext: UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

someView.backgroundColor = [UIColor colorWithPatternImage: image];

1 Ответ

7 голосов
/ 27 марта 2011

Ваш белый и черный цвета представлены в оттенках серого. Попробуйте сделать их в цветовом пространстве RGB:

gradientLayer.colors = @[
    (id)[UIColor colorWithRed:0 green:0 blue:0 alpha:1].CGColor,
    (id)[UIColor colorWithRed:1 green:1 blue:1 alpha:1].CGColor
];

Это должно исправить вашу проблему, хотя я не уверен, что за этим стоит Кварцевая механика.

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