簡體   English   中英

帶有圓角和陰影的Swift uiview不起作用

[英]Swift uiview with rounded corners and drop shadow does not work

我正在嘗試向我的UIView添加圓角和陰影:

myView.layer.cornerRadius = 2
myView.layer.masksToBounds = false    
    myView.layer.shadowColor = UIColor.black.cgColor
    myView.layer.shadowOffset = CGSize(width: 0, height: 1)
    myView.layer.shadowOpacity = 0.4
    myView.layer.shadowPath = UIBezierPath(roundedRect: myView.bounds, cornerRadius: 2).cgPath

但這將使陰影在右側和底部的位置下降得很遠,這是錯誤的。

我將這段代碼放在ViewDidLoad()中,因為我的UIView已經有了另一個子類,因此我想在VC中而不是在子類中添加陰影

但是,如果我將代碼放在子類中,它將起作用:

import UIKit

public class ShadowView: UIView {

    open var cornerRadius: CGFloat = 2

    open var shadowOffsetWidth: Int = 0
    open var shadowOffsetHeight: Int = 2
    open var shadowColor: UIColor? = UIColor.black
    open var shadowOpacity: Float = 0.4

    override open func layoutSubviews() {

        layer.cornerRadius = cornerRadius
        let shadowPath = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)

        layer.masksToBounds = false
        layer.shadowColor = shadowColor?.cgColor
        layer.shadowOffset = CGSize(width: shadowOffsetWidth, height: shadowOffsetHeight)
        layer.shadowOpacity = shadowOpacity
        layer.shadowPath = shadowPath.cgPath
    }

}

但是,如何將代碼放置在我的主VC中而不是子類中呢?

我會嘗試將您的VC層代碼放在viewDidLayoutSubviews中,而不是viewDidLoad中。 到那時,您的視圖將被適當地調整大小。

暫無
暫無

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

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