2015-06-01 20 views
1

我目前使用CAShapeLayer作爲我的一項要求。我成功實現了fillcolor,strokecolor等等,但是我想改變CAShapeLayer外部的顏色。我試着用backgroundcolor,&這樣做,結果跟着SO的很多答案,但無法做到。任何人都可以引導我解決方案。截圖附Current Screen Change White color to black color with alpha 0.6iOS:CAShapeLayer,改變外層的顏色

編輯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; 

編輯2:Xcode的查看器的調試器 Xcode debugger

在上述圖像I可以看到,我已經設置了背景色爲self.view。但我希望它能夠覆蓋我的地圖視圖&顏色應該是半透明的,這樣圈外的地圖數據也應該可見。

+0

你目前的代碼是什麼? – Larme

+0

@Larme:只需在一分鐘內更新 – iYoung

+0

我想你會在視圖圖層上添加形狀圖層。如果您爲該視圖圖層設置顏色,我希望它可以工作。 – Exploring

回答

0

您是否嘗試過使用XCode視圖的調試器來知道此白色背景在您的視圖層次結構中的屬性?

您將視圖的maskLayer用作圓。所以我的猜測是,這個白色背景必須是OUTSIDE你的觀點 - 所有的東西你的面具被剪掉 - 所以你應該嘗試改變你的viewController的視圖backgroundColor(或者僅僅是你的自定義圓角鑑於上述任何其他視圖)

+0

請檢查我的編輯。 – iYoung

+0

當你問一個問題時,請給出更多的細節,我們不能猜測你打算做什麼......所以,現在,你說你不想要一個簡單的「莊稼」面具,但一些半透明的面具......我'米仍然不知道你在找什麼,但檢查: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