【问题标题】:UITextview inside UIStackViewUIStackView 内的 UITextview
【发布时间】:2016-09-27 23:35:10
【问题描述】:

我在 UIStackView 中添加了我的 UITextView。

但我的 textview 不是 Multiline。

自动布局如下图:

根据图像,它只占用 1 行。根据图像显示为超出框架的 textview 框架。

UITextView

UIStackView

【问题讨论】:

  • 那么,问题出在哪里?
  • @Lion,应该多行显示吗?

标签: ios iphone autolayout uitextview uistackview


【解决方案1】:

问题是您通过提供 topbottom 约束修复了 UIStackviewheight

  1. 删除底部约束

禁用文本视图滚动。

让你的 textview 委托给自己并实现 textViewDidChange

斯威夫特

func textViewDidChange(_ textView: UITextView) {
    view.layoutIfNeeded()
}

目标 C:

-(void)textViewDidChange:(UITextView *)textView {
    [self.view layoutIfNeeded];
}

确保调用此方法。

现在你的 stackview 应该随着你的 textview 增长到多行。

那么你的文本视图不是多行的原因是因为你已经固定了高度。所以它永远不会是多行的。

查看 GIF:

【讨论】:

  • 太棒了!如果您有静态文本,我发现如果您覆盖 viewDidLayoutSubviews() ,您可以在那里获取内容高度并更新高度约束。但你的回答让我走上了正确的道路!覆盖 func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() textViewHeightConstraint.constant = textView.contentSize.height textView.layoutIfNeeded() }
  • 如果堆栈视图不是最后一个视图怎么办?例如,您不能删除底部约束,因为您需要与较低位置的视图保持间距。
  • @TeodorCiuraru,如果 stackview 不是最后一个视图,那么您必须为下一个视图提供垂直间距。您必须这样做,使下一个视图下降或降低高度以为此视图创建一个空间(下一个视图不应具有底部约束或固定高度)。
  • @Irfan 好像我运气不好。我需要对最后一个视图进行底部约束。幸运的是,我通过从堆栈视图中取消嵌入并随机按下压缩拥抱优先按钮来解决它:))
  • 如果你想让 textView 滚动怎么办?
【解决方案2】:

到目前为止,我找到的最佳解决方案是将 UITextView 包装在 UIView 中,然后使用高度锚设置 UITextView 的固定高度。

let textView = UITextView()
let containerView = UIView()
textView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(textView)

textView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor).isActive = true
textView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
textView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor).isActive = true
textView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true

textView.heightAnchor.constraint(equalToConstant: 100).isActive = true
let stackView = UIStackView(arrangedSubviews: [containerView])

【讨论】:

    【解决方案3】:

    只要您的堆栈视图受到良好约束,如果您在 UITextView 上将 isScrollEnabled 设置为 false,它就可以在堆栈视图中自行调整大小。

    【讨论】:

    • 干杯!这是一个巨大的。
    • @Womble 很乐意为您提供帮助!我想那也很及时?
    • 您帮助我避免了我的冒名顶替综合症。谢谢。
    猜你喜欢
    • 2018-01-22
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2018-09-05
    • 2021-09-01
    • 2016-01-24
    相关资源
    最近更新 更多