inputAccessoryView 如何调整大小?

Posted

技术标签:

【中文标题】inputAccessoryView 如何调整大小?【英文标题】:How inputAccessoryView gets sized? 【发布时间】:2018-12-05 08:52:09 【问题描述】:

UIResponder.inputAccessoryView 的大小如何控制?太神奇了!

【问题讨论】:

【参考方案1】:

这个问题困扰我很久了。

根据我对 ios 12 Simulator 的经验和观察,有两种情况,

    没有自动布局。

    UIKit 会自动添加一个高度约束,它的 常数值是基于帧的大小 装载点的附件视图。看来 约束实际上是翻译自动调整大小 约束。您可以找到与高度相关的常量 并实际修改它们,但因为它是实现 详细点,不建议做。我强烈 推荐使用 Auto-Layout 方式。

    使用自动布局。

    如果在加载点无法解决大小问题 附件视图,UIKit 会添加一些显式的 基于其拟合尺寸的宽度/高度约束。

    如果满足这些要求,UIKit 只使用现有的约束,而不是 改变任何东西。

    intrinsicContentSize 必须返回正确的值。 如果它包含UIView.noIntrinsicMetric,UIKit 添加 它自己的高度限制。

    视图的大小可以通过自动布局系统解决。

    由于这些限制是自己设置的,所以很安全 根据需要修改它们。另外,附件视图 将根据其内容调整大小,因此 这是唯一的常规和推荐方式 具有动态大小的布局附件视图。

    带有自动布局和UIInputView.allowsSelfSizing

    与自动布局 (#2) 基本相同,但您不需要 如果您将标志设置为true,请提供intrinsicContentSize。 这是更明确的选项。

【讨论】:

以上是关于inputAccessoryView 如何调整大小?的主要内容,如果未能解决你的问题,请参考以下文章

调整附件输入视图的大小?

inputAccessoryView 没有在 iPhone X 上获得触摸事件

如何将 UICollectionView 添加到 inputAccessoryView

如何将 UILabel 放在键盘的“inputAccessoryView”中?

swift如何将inputAccessoryView停靠在UIToolbar上方(不是底部)

如何启用/禁用 UITextField 的 inputAccessoryView 按钮?