iOS仿微信聊天输入框、评论输入框

2

iOS仿微信聊天输入框、评论输入框

iOS仿微信聊天输入框、评论输入框

最近项目有需求,需要实现一个类似微信聊天输入框的组件,用在全平台的评论功能中。大概需求就是输入的文字占满一行时,自动折行并且增大输入框的高,输入框的高有默认的最大值。在此,记录一下遇到的问题。

1. 输入框的高度自适应

首先,我们需要实现输入框的高度自适应。我们可以使用 `UITextView` 来实现这个功能。具体步骤如下:

* 创建一个 `UITextView` 的实例,并设置其 `delegate` 为当前控制器。

* 在 `textViewDidChange:` 方法中,获取当前输入框的高度和内容。

* 如果输入框的高度小于最大值(假设为200),则增加输入框的高度并重新布局子视图。

```swiftclass ChatInputView: UIView {

let textView = UITextView()

override init(frame: CGRect) {

super.init(frame: frame)

setupUI()

}

required init?(coder: NSCoder) {

fatalError("init(coder:) has not been implemented")

}

func setupUI() {

addSubview(textView)

textView.delegate = self textView.backgroundColor = .white textView.font = UIFont.systemFont(ofSize:14)

textView.layer.cornerRadius =5 let maxHeight =200 textView.heightAnchor.constraint(equalToConstant: maxHeight).isActive = true }

func textViewDidChange(_ textView: UITextView) {

guard let text = textView.text else { return }

if text.count >0 && textView.contentSize.height < maxHeight {

textView.heightAnchor.constraint(equalToConstant: max(min(textView.contentSize.height, maxHeight),44)).isActive = true layoutIfNeeded()

} else {

textView.heightAnchor.constraint(equalToConstant:44).isActive = true layoutIfNeeded()

}

}

}

extension ChatInputView: UITextViewDelegate {}

```

2. 输入框的内容回显

在 `textViewDidChange:` 方法中,我们需要将输入框的内容回显到视图上。具体步骤如下:

* 获取当前输入框的内容。

* 将内容显示在视图上。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let text = textView.text ?? ""

let attributedText = NSMutableAttributedString(string: text)

attributedText.addAttributes([.font: UIFont.systemFont(ofSize:14)], range: NSRange(location:0, length: text.count))

let label = UILabel()

label.attributedText = attributedText label.frame = CGRect(x:10, y:10, width: textView.bounds.width -20, height: textView.contentSize.height)

addSubview(label)

}

```

3. 输入框的高度自适应

在 `textViewDidChange:` 方法中,我们需要将输入框的高度自适应。具体步骤如下:

* 获取当前输入框的高度。

* 如果输入框的高度小于最大值(假设为200),则增加输入框的高度并重新布局子视图。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let height = max(min(textView.contentSize.height, maxHeight),44)

textView.heightAnchor.constraint(equalToConstant: height).isActive = true layoutIfNeeded()

}

```

4. 输入框的内容回显

在 `textViewDidChange:` 方法中,我们需要将输入框的内容回显到视图上。具体步骤如下:

* 获取当前输入框的内容。

* 将内容显示在视图上。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let text = textView.text ?? ""

let attributedText = NSMutableAttributedString(string: text)

attributedText.addAttributes([.font: UIFont.systemFont(ofSize:14)], range: NSRange(location:0, length: text.count))

let label = UILabel()

label.attributedText = attributedText label.frame = CGRect(x:10, y:10, width: textView.bounds.width -20, height: textView.contentSize.height)

addSubview(label)

}

```

5. 输入框的高度自适应

在 `textViewDidChange:` 方法中,我们需要将输入框的高度自适应。具体步骤如下:

* 获取当前输入框的高度。

* 如果输入框的高度小于最大值(假设为200),则增加输入框的高度并重新布局子视图。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let height = max(min(textView.contentSize.height, maxHeight),44)

textView.heightAnchor.constraint(equalToConstant: height).isActive = true layoutIfNeeded()

}

```

6. 输入框的内容回显

在 `textViewDidChange:` 方法中,我们需要将输入框的内容回显到视图上。具体步骤如下:

* 获取当前输入框的内容。

* 将内容显示在视图上。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let text = textView.text ?? ""

let attributedText = NSMutableAttributedString(string: text)

attributedText.addAttributes([.font: UIFont.systemFont(ofSize:14)], range: NSRange(location:0, length: text.count))

let label = UILabel()

label.attributedText = attributedText label.frame = CGRect(x:10, y:10, width: textView.bounds.width -20, height: textView.contentSize.height)

addSubview(label)

}

```

7. 输入框的高度自适应

在 `textViewDidChange:` 方法中,我们需要将输入框的高度自适应。具体步骤如下:

* 获取当前输入框的高度。

* 如果输入框的高度小于最大值(假设为200),则增加输入框的高度并重新布局子视图。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let height = max(min(textView.contentSize.height, maxHeight),44)

textView.heightAnchor.constraint(equalToConstant: height).isActive = true layoutIfNeeded()

}

```

8. 输入框的内容回显

在 `textViewDidChange:` 方法中,我们需要将输入框的内容回显到视图上。具体步骤如下:

* 获取当前输入框的内容。

* 将内容显示在视图上。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let text = textView.text ?? ""

let attributedText = NSMutableAttributedString(string: text)

attributedText.addAttributes([.font: UIFont.systemFont(ofSize:14)], range: NSRange(location:0, length: text.count))

let label = UILabel()

label.attributedText = attributedText label.frame = CGRect(x:10, y:10, width: textView.bounds.width -20, height: textView.contentSize.height)

addSubview(label)

}

```

9. 输入框的高度自适应

在 `textViewDidChange:` 方法中,我们需要将输入框的高度自适应。具体步骤如下:

* 获取当前输入框的高度。

* 如果输入框的高度小于最大值(假设为200),则增加输入框的高度并重新布局子视图。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let height = max(min(textView.contentSize.height, maxHeight),44)

textView.heightAnchor.constraint(equalToConstant: height).isActive = true layoutIfNeeded()

}

```

10. 输入框的内容回显

在 `textViewDidChange:` 方法中,我们需要将输入框的内容回显到视图上。具体步骤如下:

* 获取当前输入框的内容。

* 将内容显示在视图上。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let text = textView.text ?? ""

let attributedText = NSMutableAttributedString(string: text)

attributedText.addAttributes([.font: UIFont.systemFont(ofSize:14)], range: NSRange(location:0, length: text.count))

let label = UILabel()

label.attributedText = attributedText label.frame = CGRect(x:10, y:10, width: textView.bounds.width -20, height: textView.contentSize.height)

addSubview(label)

}

```

11. 输入框的高度自适应

在 `textViewDidChange:` 方法中,我们需要将输入框的高度自适应。具体步骤如下:

* 获取当前输入框的高度。

* 如果输入框的高度小于最大值(假设为200),则增加输入框的高度并重新布局子视图。

```swiftfunc textViewDidChange(_ textView: UITextView) {

// ...

let height = max(min(textView.contentSize.height, maxHeight),44)

textView.heightAnchor.constraint(equalToConstant: height).isActive = true layoutIfNeeded()

}

```

12. 输入框的内容回显

在 `textViewDidChange:` 方法中,我们需要将输入框的内容回显到视图上。具体步骤如下:

* 获取当前输入框的内容。

* 将内容显示在

聊天评论仿微信输入框聊天输入框评论输入框UITextView自动增加行高textContainerInset和textContain

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 导出微信聊天记录并输出

下一篇 微信聊天功能软件测试用例,软件测试用例实例之常见功能测试点