将Nib文件作为inputAccessoryView加载

时间:2018-03-25 16:21:21

标签: swift nib inputaccessoryview safearealayoutguide

我有一个Nib文件。附图。我希望这个Nib文件作为inputAccessoryView。原因是accessoryView不遵守iphoneX上的安全区域。 GRRRR!

我按照本教程设置了我的Nib文件... https://medium.com/code-with-rohit/inputaccessoryview-and-iphonex-7b5547fe98da

如何在inputAccessoryView中正确获取此Nib文件?

Nib File Constraints Structure

我将自定义类“AccessoryView”作为文件所有者。从这里我挣扎。

任何帮助,一如既往地高度赞赏。

更新 我删除了文件所有者,并将该类添加到顶部视图。

在我的AccessoryView类中我有

override init(frame: CGRect) { // for using CustomView in code
        super.init(frame: frame)
        self.commonInit()
    }

    required init?(coder aDecoder: NSCoder) { // for using CustomView in IB
        super.init(coder: aDecoder)
        if self.subviews.count == 0 {
            self.commonInit()
        }
    }

    class func instanceFromNib() -> UIView {
        return UINib(nibName: "AccessoryView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
    }


    private func commonInit() {
        guard let container = accessoryViewContainerView else { return }
        container.frame = self.bounds
        container.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        self.addSubview(container)
    }
}

但它给了我以下效果:

new effect after changes

然后我将视图添加到inputAccessoryView:

override var inputAccessoryView: UIView? {
        get {
            return AccessoryView.instanceFromNib()
        }
    }

正如您所看到的,它已添加了子视图,但约束都已关闭。

0 个答案:

没有答案