簡體   English   中英

UIView 陰影和圓角

[英]UIView shadow AND rounded corners

我有一個 UIView,我想要一個陰影和圓角。 問題是 - 陰影需要masksToBounds = NO而圓角需要masksToBounds = YES

我找到的解決方案是擁有一個帶有陰影的容器,並將我的 UIView 添加為容器的子視圖 - 並給它圓角。

這有效。 我有陰影和圓角 - 但這不好。 陰影是矩形視圖,我的圖像有圓角。

陰影和圓角

如何為圓角實現陰影?

import UIKit

@IBDesignable
class customButton: UIView {

    @IBInspectable var cornerRadius:CGFloat = 0{
        didSet{
            self.layer.cornerRadius = cornerRadius
        }
    }

    @IBInspectable var borderWidth:CGFloat = 0{
        didSet{
            self.layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var borderColor:UIColor = UIColor.white{
        didSet{
            self.layer.borderColor = borderColor.cgColor
        }
    }


}

將此設置為 UIView 的類並放置maskToBound = true 然后在檢查器中相應地設置值以獲得圓形陰影。

移除容器,它會裁剪您的視圖陰影。 導入QuartzCore/QuartzCore.h 並嘗試將此代碼用於您的視圖

#import < QuartzCore/QuartzCore.h>

...

view.layer.cornerRadius = 5.0f;
[view.layer setShadowColor:[UIColor redColor].CGColor];
[view.layer setShadowOpacity:0.7];
[view.layer setShadowRadius:5.0];
[view.layer setShadowOffset:CGSizeMake(2.0, 2.0)];

要了解有關 maskToBound 的更多信息,請參閱此鏈接

如果設置為 YES,UIView layer.masksToBounds 正在做什么?

// border radius
[yourView.layer setCornerRadius:30.0f];

// border
[yourView.layer setBorderColor:[UIColor blackColor].CGColor];
[yourView.layer setBorderWidth:1.5f];
 yourView.layer.masksToBounds=YES;

// drop shadow
[yourView.layer setShadowColor:[UIColor lightGrayColor].CGColor];
[yourView.layer setShadowOpacity:0.8];
[yourView.layer setShadowRadius:3.0];
[yourView.layer setShadowOffset:CGSizeMake(2.0, 2.0)];

這可能對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM