ios給 UIView 添加陰影

給 UIView 添加陰影有時候明明添加了陰影但是在 UI 上卻沒顯示出來,這裏總結幾條陰影不顯示的緣由:

1. 是否設置了 masksToBounds 爲 YES,設置爲 masksToBounds=YES,陰影不顯示;
2. 設置陰影時 view 的 frame 是否爲 CGRectZero,若是是,即便設置陰影后修改 frame 不爲 CGRectZero 時,也不會顯示陰影;
3. 使用自動佈局時每每會遇到 frame 爲 CGRectZero 時設置陰影無效,這時能夠使用 `layoutIfNeeded` 方法;

【經過 layer 設置陰影】
// 陰影的顏色
self.imageView.layer.shadowColor = [UIColor blackColor].CGColor;
self.imageView.layer.shadowOpacity = 0.8;
// 陰影的圓角
self.imageView.layer.shadowRadius = 1;
// 陰影偏離的位置 (100, 50) x 方向偏離 100,y 偏離 50 正向,若是是負數正好爲相反的方向
self.imageView.layer.shadowOffset = CGSizeMake(3, 4);

【經過 shadowPath 設置陰影】

經過這種方式設置的陰影能夠自定義陰影的形狀,它會使用在 layer 上設置的屬性,好比 shadowRadius。

UIEdgeInsets edges = UIEdgeInsetsMake(15, 10, 15, 10);
UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(-edges.left, -edges.top, CGRectGetWidth(self.imageView.frame) + edges.left + edges.right, CGRectGetHeight(self.imageView.frame) + edges.top + edges.bottom)];
self.imageView.layer.shadowPath = path.CGPath;佈局

相關文章
相關標籤/搜索