自定义类swift设置约束到superview

时间:2017-07-26 07:30:50

标签: swift swift3

我想创建一个自定义UIView,我可以添加到任何视图,并让它显示像picture.中的instagram一样的红色错误消息我能够在我的视图控制器中以编程方式执行此操作但想要创建一个模块化的类,我可以将它添加到我想要显示错误的任何视图中。我的问题是如何在自定义类中为superview添加约束?

例如我该怎么做:

    topAnchor.constraint(equalTo: view.topAnchor, constant: 0)
    leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0)
    rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0)
    widthAnchor.constraint(equalTo: errorLabel.frame.size.height,0)

在自定义类中,以便我不必在视图控制器中执行此操作?我可以访问任何superView的约束,以便我的视图始终位于顶部吗?

class CustomUIAlertView : UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

您能就如何处理此问题提供指导吗?我觉得我错过了一些基本的东西。

1 个答案:

答案 0 :(得分:0)

我认为最好的方法是将superview作为参数传递给init方法。

类似的东西:

class CustomUIAlertView : UIView {
    weak var parent:UIView
    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    required init(frame:CGRect, superview:UIView) {
        super.init(frame: frame)
        self.parent = superview
    }
}