2013-03-18 49 views
1

似乎有很多關於此問題的想法以及SO問題。但是,其中一些人說某些代碼有效。例如:使用石英圓角和應用陰影

[self.layer setShadowOffset:CGSizeMake(1, 3)]; 
[self.layer setShadowOpacity:0.9]; 
[self.layer setShadowRadius:3.0f]; 
[self.layer setShouldRasterize:YES]; 

[self.layer setCornerRadius:12.0f]; 

[self.layer setShadowPath:[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:12.0f] CGPath]]; 

應同時應用12.0f的圓角半徑和陰影。但它不起作用。當我使用這個代碼時,我得到了陰影,但沒有拐角半徑。

據我所知,這是因爲我需要將clipsToBounds設置爲YES。但是,這反過來否定了陰影。

我做錯了什麼或者上面的代碼不工作?

此外,人們說,一個很好的方法來克服這是創建一個單獨的陰影層,然後將其添加。

但是,我會如何做到這一點在UIView的drawRect:? - 示例代碼會很棒!

謝謝!

回答

0

你的代碼看起來不錯,我試過你的代碼,它對我來說工作正常。

確保rect用於[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:12.0f] CGPath]]是正確的,如果您使用黑色背景,則看不到陰影。

我已經在我的代碼中試過了。這裏是工作的代碼.......

[self.EnterQtyView.layer setShadowOffset:CGSizeMake(1, 5)]; 
[self.EnterQtyView.layer setShadowOpacity:1.0]; 
[self.EnterQtyView.layer setShadowRadius:5.0f]; 
[self.EnterQtyView.layer setShouldRasterize:YES]; 
[self.EnterQtyView.layer setCornerRadius:12.0f]; 
[self.EnterQtyView.layer setShadowPath:[[UIBezierPath bezierPathWithRoundedRect:self.EnterQtyView.frame cornerRadius:12.0f] CGPath]]; 

希望這將幫助你.................

+1

來回感謝您的回覆。我最初通過在原稿底下添加一個視圖來解決它,然後決定改變我的設計,並使用設計成一疊紙的可調整大小的圖像。正如你所說的,你的代碼相對於我原來的問題起作用,我將它設置爲接受的答案:) – 2013-03-19 15:52:05