2012-06-16 2 views
1

Я ищу для создания CAGradientLayer с закругленными углами. Я не могу использовать .cornerradius, потому что я хотел бы объединить только два верхних угла. Кроме того, я не могу использовать .mask, потому что я хотел бы сделать снимок экрана после этого, а renderInContext не поддерживает маски CALayer.CAGradientLayer с закругленными верхними углами (без использования. Маски)

Как я могу либо:

A: Создание CALayer с градиентом и двумя закругленными углами без использования масок

или

B: сделать снимок экрана, похожий на UIGraphicsGetImageFromCurrentImageContext, но уважая маску

+0

Я думаю, вы должны сделать слой прозрачным и установить содержимый слой к изображению с верхними углами закругленных. –

+0

Я надеялся сделать это программно. Это должно быть возможно! – jadengeller

+0

Я хочу сделать то же самое, вы уже это поняли? – Brian

ответ

0

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

ПРИМЕЧАНИЕ: Не уверен, если это решение будет работать для вас, учитывая ваши требования о масках

+(void) makeGradientButton: (UIButton*) button 
    { 
     //create a rounded layer 
     CAGradientLayer *gradient = [CAGradientLayer layer]; 
     gradient.frame = button.bounds; 
     gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil]; 
     gradient.cornerRadius = 8.0f; 

     //now create a square layer that draws over the top 
     CAGradientLayer *gradient2 = [CAGradientLayer layer]; 
     gradient2.frame = CGRectMake(0, 9, button.bounds.size.width, button.bounds.size.height-9); 
     gradient2.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor redColor] CGColor], nil]; 
     gradient2.cornerRadius = 0.0f; 

     [gradient setMasksToBounds:YES]; 
     [button.layer insertSublayer:gradient atIndex:0]; 
     [button.layer insertSublayer:gradient2 atIndex:1]; 

     [button setBackgroundColor:[UIColor clearColor]]; 

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