Ios UIStackView:我是否可以约束可以插入的视图以符合协议?

Ios UIStackView:我是否可以约束可以插入的视图以符合协议?,ios,swift,uistackview,Ios,Swift,Uistackview,我是否可以将UIView设置为只插入符合自定义协议(如“MyProtocol”)的视图,而不是将任何UIView插入UIStackView中?您可以将UIView子类化,使其接受视图和协议(来自swift 4+,请参阅) 它看起来像这样: protocol SomeProtocol { func someFunc() } class CustomStack: UIView { private let stack = UIStackView() init() {

我是否可以将UIView设置为只插入符合自定义协议(如“MyProtocol”)的视图,而不是将任何UIView插入UIStackView中?

您可以将UIView子类化,使其接受视图和协议(来自swift 4+,请参阅)

它看起来像这样:

protocol SomeProtocol {
    func someFunc()
}

class CustomStack: UIView {

    private let stack = UIStackView()

    init() {
        super.init(frame: CGRect.zero)
        self.addSubview(stack)
        // then you can constraint the stack to self
    }

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



    func addSubview(_ view: UIView & SomeProtocol) {
        self.stack.addSubview(view)
        view.someFunc() // you can call the protocol methods on the view

    }

    func addArrangedSubviews(_ view: UIView & SomeProtocol) {
        stack.addArrangedSubview(view)
        view.someFunc() // you can call the protocol methods on the view
    }

}