如何在UIViewController ios中使用UIView

时间:2017-03-13 08:08:01

标签: ios iphone uiview uiviewcontroller cardview

我像这样制作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
    }

}

2 个答案:

答案 0 :(得分:1)

如果你想在viewController中添加它,你有几个选择:

  1. 直接在故事板中添加(最佳选项):
  2. 通过xCode

    右下方的检查器/对象库在viewController中拖动视图

    UIView object screenshot

    添加约束,然后点按

    中的视图

    Constraints screenshot

    并在身份检查器/自定义类字段中选择自定义类

    1. 您还可以使用从xib 加载的视图 谷歌从xib加载的方式不同。

    2. 您可以在代码中添加它。这有点困难:

    3. 创建一个懒惰的属性:

      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)

在故事板或xib文件中添加新的uiview,并将其类设置为CardView,如图所示enter image description here