2015-06-01 4 views
1

В настоящее время я использую CAShapeLayer для одного из моих требований. Мне удалось реализовать fillcolor, strokecolor и т. Д., Но я хотел изменить цвет внешней части этого CAShapeLayer. Я попытался сделать это с backgroundcolor, & последовал за многими ответами от SO, но не смог это сделать. Может ли кто-нибудь помочь мне с решением. Скриншот прилагается Current Screen Change White color to black color with alpha 0.6iOS: CAShapeLayer, изменение цвета внешнего слоя

Edit 1: Код для создания слоя

// create layer mask for map 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
mapView.layer.mask = maskLayer; 
// maskLayer.backgroundColor = [[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.7] CGColor]; 
self.maskLayer = maskLayer; 

// create shape layer for circle we'll draw on top of map (the boundary of the circle) 
CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
circleLayer.lineWidth = 3.0; 
circleLayer.fillColor = [[UIColor clearColor] CGColor]; 
circleLayer.strokeColor = [[UIColor blackColor] CGColor]; 

// circleLayer.borderColor = [[UIColor blackColor] CGColor]; 
// circleLayer.backgroundColor = [[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.7] CGColor]; 

[mapView.layer addSublayer:circleLayer]; 
self.circleLayer = circleLayer; 

Edit 2: Debugger Xcode в телезрителя Xcode debugger

В изображении выше, я могу видеть, что я установить цвет фона до self.view. Но я хочу, чтобы это было над моим видом карты & цвет должен быть полупрозрачным, чтобы также отображались данные карты вне круга.

+0

Каков ваш текущий код? – Larme

+0

@ Larme: Просто обновление через минуту – iYoung

+0

Я предполагаю, что вы добавляете слой формы поверх слоя вида. Если вы установите цвет для этого слоя, я надеюсь, что он может работать. – Exploring

ответ

0

Вы пытались использовать отладчик видов XCode, чтобы знать, где этот белый фон принадлежит вашей иерархии представлений?

Вы используете свой вид maskLayer в качестве круга. Поэтому я предполагаю, что этот белый фон должен быть ВНЕШНЕМ вашему представлению - все, что скрывает ваша маска, - вы должны, вероятно, попытаться изменить вид viewController backgroundColor (или любой другой вид, который находится чуть выше вашего пользовательского закругленного вида)

+0

Проверьте мои изменения. – iYoung

+0

Пожалуйста, дайте БОЛЬШЕ подробностей, когда вы зададите вопрос, мы не можем догадаться, что вы намереваетесь сделать ... Итак, вы говорите, что вам не нужна простая маска «crop», а какая-то полупрозрачная маска ... I Я все еще не уверен, что вы ищете, но проверьте это: http://stackoverflow.com/questions/15375777/cut-out-shape-with-animation/15377207#15377207 – Vinzzz

0
[self.view.layer setBackgroundColor:[UIColor grayColor].CGColor]; 

UIBezierPath *circle = [UIBezierPath bezierPathWithArcCenter:self.view.center 
                 radius:45.0 
                startAngle:0 
                endAngle:2.0*M_PI 
                clockwise:YES]; 

CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
circleLayer.bounds = CGRectMake(0, 0, 2.0*(45.0), 2.0*(45.0)); 
circleLayer.path = circle.CGPath; 
circleLayer.strokeColor = [UIColor orangeColor].CGColor; 
circleLayer.fillColor = [UIColor whiteColor].CGColor; 
circleLayer.lineWidth = 3.0; // your line width 

[self.view.layer addSublayer:circleLayer]; 

Посмотрите, поможет ли это вам.

+0

Пожалуйста, проверьте мои изменения. – iYoung

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