2012-09-20 45 views
1

我只是想創建一個簡單的漸變,上面有一個標籤,我可以覆蓋在MKMapView的頂部。我看着所以看到我可以使用CAGradientLayer而不是在UIView中重寫drawRect。我想我會試一試。在我viewDidLoad中,我這樣做:CALayer setCornerRadius仍然在下面留下白色的角落

CGRect frame = CGRectMake(self.mapView.frame.origin.x, self.mapView.frame.origin.y, 320.0, 44.0); 

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.frame = frame; 
gradientLayer.backgroundColor = (__bridge CGColorRef)((__bridge id)([UIColor clearColor].CGColor)); 
[gradientLayer setCornerRadius:12.0]; 
[gradientLayer setOpacity:0.5]; 

gradientLayer.colors = @[(id)[UIColor blackColor].CGColor, (id)[UIColor whiteColor].CGColor]; 
[self.view.layer addSublayer:gradientLayer]; 

這是在正確的道路上,除了左上角和右上角有這個白色的下方。是否有一個原因?我認爲這可能是因爲我沒有設置圖層的backgroundColor,因爲之前發生在我的UIViews上,但它看起來不像它。

enter image description here

謝謝!

回答

2

角落下面沒有白色。他們有地圖在下面。這裏有四個角落,放大600%:

enter image description here

當您設置一個層的拐角半徑,你裁剪該層。圖層下面的任何內容都會顯示您將圓形圖層剪掉的位置。

在你的情況,你修剪你的梯度層的拐角處脫落,所以在地圖圖層下面顯示了通過不與梯度被混合。

您還需要剪切地圖圖層的邊角。最簡單的方法是在地圖圖層上設置相同的角半徑。

0

[Rü包含這個頭文件...

#import <QuartzCore/QuartzCore.h> 
#import "QuartzCore/CALayer.h" 

然後使用半徑。

gradientLayer.layer.cornerRadius = 7.0; 
0
  1. 添加QuartzCore.framework
  2. #import <QuartzCore/QuartzCore.h>
  3. yourView.layer.cornerRadius = 12.0f;
相關問題