2016-01-12 2 views
0

Я хочу, чтобы цветной градиент перекрывал мой вид. В контроллере зрения у меня есть этот кодCAGradientLayer не может изменить цвет

- (void)viewDidLoad { 
    self.view.backgroundColor = [UIColor whiteColor]; 

    CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
    gradientLayer.frame = self.view.bounds; 
    gradientLayer.colors = [NSArray arrayWithObjects:(id)[UIColor redColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; 
    gradientLayer.startPoint = CGPointMake(0, 0); 
    gradientLayer.endPoint = CGPointMake(0, 1.0f); 
    self.view.layer.mask = gradientLayer; 
} 

Но даже если первый цвет красный, я вижу только черный градиент. Как я могу отобразить красный градиент?

ответ

2

TLDR: вместо того, чтобы устанавливать градиент в качестве маски слоя, добавьте слой градиента в качестве подслоя view.layer.

Слои используют маску маски слоя, чтобы определить альфу своего контента, используя альфа маски в каждом пикселе, так как ваш gradientLayer полностью непрозрачен, эффект, который вы получали, не был тем, на которого вы надеялись ,

Слои похожи на виды (представления на самом деле являются обертками для слоев), вы можете добавить их в качестве подслоев таким же образом, что представления добавляются в виде подзонов.

+0

Объяснение того, что настройка маски может быть приятной, так что OP знает, почему она побагровела :) – Losiowaty

+1

Я расширил ответ, предложенный @Losiowaty – EmilioPelaez

Смежные вопросы