iOS UIView的圓角加陰影效果的實現,最近項目的界面都要改爲卡片的形式,即須要投影的效果,還要削出圓角,咱們都知道削圓角通常有兩種方式,一種是直接用layer.cornerRadius來設置,咱們知道的通常都是下面兩行代碼一塊兒使用來實現圓角:php
1
2
|
self.layer.cornerRadius = 10 ;
self.layer.masksToBounds=YES;
|
可是隻要self.layer.masksToBounds=YES;有這句,投影的效果就出不來。
還有一種性能比較好的圓角設置方式,就是用UIBezierPath來設置,我試過用這個來設置圓角的話,投影同樣也出不來。
還有在網上看到了加一層layer的,大致思路就是self.layer來設置圓角,新寫一個layer來設置投影,而後把layer放到self.layer上,我試了以後發現沒什麼效果,並且偏移會很明顯的看出來,但不是以投影的方式出現。
而後又找到了一篇文章,給出的方法代碼以下:app
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
@implementation TPShadowView
-(instancetype)initWithFrame:(CGRect)frame{
self = [ super initWithFrame:frame];
if (self) {
self.backgroundColor = kUIColorFromRGB( 0x4b4773 );
//v.layer.masksToBounds=YES;這行去掉
self.layer.cornerRadius = 10 ;
self.layer.shadowColor = kUIColorFromRGB1( 0x000000 , 1 ).CGColor;
self.layer.shadowOffset = CGSizeMake( 2 , 5 );
self.layer.shadowOpacity = 0.5 ;
self.layer.shadowRadius = 5 ;
}
return self;
}
|
這個是我整理以後的寫了個投影的view類,方便使用,核心就是註釋着這行去掉的這個,當時看的時候,以爲有點不敢相信,可是那個博主給了投影效果,我就抱着試一下的心態寫了,沒想到還真的能夠。。。
性能