2012-03-11 69 views
2

我想爲我在coregraphics中繪製的按鈕添加陰影。除了使按鈕小於框架,(這是凌亂的代碼,將來你會忘記這一點,並想知道爲什麼你的按鈕不是它應該是的大小),我有什麼選擇畫陰影?這也是一種自定義形狀。在coregraphics中添加陰影 - 超出上下文範圍?

回答

3

最簡單的方法是將其添加到您的CALayer:

#include <QuartzCore/QuartzCore.h> 

// iOS 4.0 or later 
[self.layer setShadowColor:[[UIColor blackColor] CGColor]]; 
[self.layer setShadowOffset:CGSizeMake(1.0, 1.0)]; 
[self.layer setShadowOpacity:0.5]; 
[self.layer setShadowRadius:1.f]; 

如果不會爲你工作,讓我知道,我將發佈一些代碼CG代碼。

+0

我不相信這是對手頭問題的回答 - 問題是關於影子剪輯,而不是創建一個。圖層陰影仍然會被父視圖剪切(假定陰影圖層具有按鈕大小的超級視圖)。 – 2012-03-24 03:43:37

+0

只是爲了記錄:一旦我寫了完全相同的代碼,以獲得在UITextField上的文本的DropShadow效果,UITextField是在與UITextView部分重疊的半透明UIToolbar上。在視覺上陰影很好,但UITextView中的滾動/拖動速度明顯減慢,因此。約。僅僅因爲陰影,50-60fps就達到了30-40fps。最好用CoreGraphics做到這一點:) – nacho4d 2012-03-24 04:37:54

0

假設我正確地得到了問題,您正在尋找一種方法來停止陰影的裁剪。這很容易實現,假設你有一個隱藏視圖所在的視圖層次結構,只需在陰影視圖的超視圖上關閉clipsToBounds(如果需要在超視圖的超級視圖上)。

但要小心,因爲可能有其他事情你的意見削減,你不想被看到(雖然通常這不應該是一個問題)。