en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

3.31.2011

UIView 的陰影效果設定方式


QuartzCore 提供了強大的影像處理功能,本篇所提到的陰影設定也是 QuartzCore 的功能之一,下面就來看看如何透過 QuartzCore 為物件加上陰影,與陰影微調的部份。

既然是要使用 QuartzCore,所以開撰寫程式碼之前請記得將加入對應的 Framework 與標頭檔,加入 Framework 的方式可以參考之前的文章或是直接在站內搜尋「Framework」即可。

#import <QuartzCore/QuartzCore.h>

如一開始的範例圖片所示,我們為 UIBotton 與 UILabel 加上陰影的效果,其程式碼如下。

//UIButton
//陰影的實體路徑設定
CGMutablePathRef shadowPath = CGPathCreateMutable();
CGPathMoveToPoint(shadowPath, NULL, 0.0, 0.0);
CGPathAddLineToPoint(shadowPath, NULL, 0.0, 140.0);
CGPathAddLineToPoint(shadowPath, NULL, 140.0, 140.0);
CGPathAddLineToPoint(shadowPath, NULL, 170.0, 0.0);
CGPathAddLineToPoint(shadowPath, NULL, 0.0, 0.0);

//陰影的位移量
[shadowButton.layer setShadowOffset:CGSizeMake(15.0, 15.0)];

//陰影的散射半徑(緊實程度)
[shadowButton.layer setShadowRadius:10.0];

//陰影的透明度1為不透明
[shadowButton.layer setShadowOpacity:0.8];

//陰影實體路徑
[shadowButton.layer setShadowPath:shadowPath];

//陰影顏色
[shadowButton.layer setShadowColor:[UIColor blackColor].CGColor];

//UILabel
[shadowLabel.layer setShadowOffset:CGSizeMake(3.0, 3.0)];
[shadowLabel.layer setShadowRadius:2.0];
[shadowLabel.layer setShadowOpacity:0.8];
[shadowLabel.layer setShadowColor:[UIColor purpleColor].CGColor];

上述程式碼陰影實體路徑部份是可以省略的,如果省略此部份陰影就會依照該物件的形狀去產生,如範例中的 UILabel 一般,當然你也可以針對陰影的路徑加以設定,做出有傾斜角度的陰影,如範例中的 UIButton。





沒有留言:

張貼留言