[英]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.