1. 程式人生 > >iOS下按鈕同時實現圓角與陰影效果

iOS下按鈕同時實現圓角與陰影效果

先看一下,實現一個button的圓角,如下程式碼:

button.layer.masksToBounds =YES;

button.layer.cornerRadius =10;

實現一個按鈕的陰影效果,如下程式碼:

button.shadowOffset = CGSizeMake(10, 10);

button.shadowOpacity = 0.7;


此時,如果你想即實現圓角又要陰影效果,那麼這時會有問題,你把masksToBounds設成yes此時是圓角,但是陰影會沒了,你把它設成no,圓角沒了,陰影有了,於是我開始滿網路去查,都沒有找到解決方法,最後在一個論壇裡有個兄弟這樣說了一句:需要用一個層去實現陰影,然後我照著這個思路,寫了如下程式碼

CALayer *layer = [CALayerlayer];

layer.frame = CGRectMake(跟button一樣的位置並且一樣大);

layer.backgroundColor = [UIColorblackColor].CGColor;

layer.shadowOffset = CGSizeMake(10, 10);

layer.shadowOpacity = 0.7;

layer.cornerRadius = 10;

//這裡self表示當前自定義的view

[self.layeraddSublayer:layer];

UIButton *button = [[UIButton

alloc]initWithFrame:CGRectMake(某位置某大小)];

[self addSubview:button];

button.layer.masksToBounds =YES;

button.layer.cornerRadius =10;

結果:同時實現圓角與陰影,思路是在按鈕與view之間加一層,去實現一個帶圓角的陰影,這樣最後就可以達到效果,注意一定要先上層再上按鈕,這樣保證按鈕在層之上。