autoResizingMask for inputAccessoryView无法正常工作

时间:2018-04-04 14:42:31

标签: ios swift autolayout

我正试图用span.labelsElement-name来处理iPhone X.我已经为我的inputAccessoryView添加了一个视图:

CustomView

enter image description here

我已经定义了一个插座并附在其上。像ViewController一样返回相同的视图:

inputAccessoryView

我确保添加相对于安全区域的约束。以下是我的约束:

约束

enter image description here 在SB中调整class ViewController: UIViewController { @IBOutlet weak var textFieldContainer: UIView! override var inputAccessoryView: UIView? { return textFieldContainer } override var canBecomeFirstResponder: Bool { return true } override func viewDidLoad() { super.viewDidLoad() textFieldContainer.autoresizesSubviews = true } } 如下:

AutoResizingMask

enter image description here

然而,它仍然无效。这是输出:

输出

enter image description here

我错过了什么?

2 个答案:

答案 0 :(得分:0)

您提供了文本字段高度和底部约束,尝试删除textfield的底部约束

答案 1 :(得分:0)

与表视图单元格不同,据我所知,输入附件视图中不支持动态高度计算。

您可以使用固定高度作为附件视图。

但我认为,您只想更改界面构建器中的顶部,底部或高度约束,并在下次构建后反映更改。

您可以使用自定义视图类来连接顶部,底部和高度约束。

然后覆盖intrinsicContentSize并返回三个约束常量的总和。

class TextFieldContainer: UIView {

    @IBOutlet weak var topConstraint: NSLayoutConstraint!
    @IBOutlet weak var bottomConstraint: NSLayoutConstraint!
    @IBOutlet weak var heightConstraint: NSLayoutConstraint!

    override var intrinsicContentSize: CGSize {

        let contentHeight =
            self.topConstraint.constant
                + self.heightConstraint.constant
                + self.bottomConstraint.constant

        return CGSize(width: UIScreen.main.bounds.width, height: contentHeight)
    }
}

您的布局层次结构可以简化,如下所示:

view layout

自动调整掩码可能如下所示:

autoresizing mask

最终结果的行为如下:

input accessory view