我像这样制作UIView。但我想在UIViewController中使用它 我该怎么办?
导入UIKit
class CardView: UIView {
@IBInspectable var cornerRadius: CGFloat = 2
@IBInspectable var shadowOffsetWidth: Int = 0
@IBInspectable var shadowOffsetHeight: Int = 3
@IBInspectable var shadowColor: UIColor? = UIColor.black
@IBInspectable var shadowOpacity: Float = 0.5
override 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
}
}
答案 0 :(得分:1)
如果你想在viewController中添加它,你有几个选择:
通过xCode
右下方的检查器/对象库在viewController中拖动视图添加约束,然后点按
中的视图并在身份检查器/自定义类字段中选择自定义类
您还可以使用从xib 加载的视图 谷歌从xib加载的方式不同。
您可以在代码中添加它。这有点困难:
创建一个懒惰的属性:
lazy var cardView: CardView = {
let cardView = CardView(frame: CGRect(x: 0, y: 0, width: 100, height: 200))
cardView.backgroundColor = .gray
cardView.layer.cornerRadius = 16.0
return cardView
}()
在viewDidLoad中添加自定义视图,例如:
override func viewDidLoad() {
super.viewDidLoad()
/* Adding subview to the VC */
view.addSubview(cardView)
}
然后添加约束。您可以垂直/水平居中,然后设置自定义高度/宽度。这取决于你想要的......
检查一下: Swift | Adding constraints programmatically
我建议你阅读Apple的文档而不是复制粘贴代码。 如果你还没有,请务必阅读“文档/ UserExperience / Conceptual / AutolayoutPG / ProgrammaticallyCreatingConstraints.html”。
答案 1 :(得分:0)