2016-07-01 119 views

回答

3
//Drop Shadow 
[view.layer setShadowColor: [UIColor grayColor].CGColor]; 
[view.layer setShadowOpacity:0.8]; 
[view.layer setShadowRadius:3.0]; 
[view.layer setShadowOffset:CGSizeMake(2.0, 2.0)]; 
0

那些不是燈光,而是陰影。您可以使用圖層爲UI元素繪製陰影。

2

請一次試試這個: -

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds]; 
view.layer.masksToBounds = NO; 
view.layer.shadowColor = [UIColor blackColor].CGColor; 
view.layer.shadowOffset = CGSizeMake(0.0f, 5.0f); 
view.layer.shadowOpacity = 0.5f; 
view.layer.shadowPath = shadowPath.CGPath; 

說明: - 正如所看到的最後一步有添加使用核心動畫陰影時,需要一些不同的屬性。如果你不熟悉核心動畫,不要擔心,只是試圖專注於影子代碼而不是視圖上的CALayer

shadowOffset是一個CGSize,表示距離路徑有多遠以抵消陰影。

shadowColor是陰影的顏色。陰影顏色應該始終是不透明的,因爲不透明度將由shadowOpacity屬性設置。 shadowColor財產是CGColor而不是UIColor

shadowRadius是沿陰影路徑

shadowOpacity陰影的寬度決定了陰影的不透明度。

shadowPath可能是最重要的屬性。雖然可以繪製陰影而不指定路徑,但出於性能原因,您應該始終指定一個陰影。這條道路告訴核心動畫視圖的不透明區域,如果沒有它,事情會變得非常緩慢!這是一個CGPath,這是最容易使用UIBezierPath(僅適用於iOS)如步驟2所示。

其他位於http://nscookbook.com/2013/01/ios-programming-recipe-10-adding-a-shadow-to-uiview/

+0

指定陰影路徑作爲邊界視圖是不是一個好主意,除非在圖像FILLS視圖。對於縮放到適合視圖而非填充視圖的圖像,您希望陰影從圖像本身中刪除,而不是邊界視圖。不指定陰影路徑。 – Dale