Swift5.0中的UITextView是iOS应用开发中常用的一个UI组件,它允许用户输入和显示多行文本。在自学者的练习中,掌握UITextView的基础使用至关重要,因为它广泛应用于各种场景,如评论输入、日记编辑、富文本显示等。下面将详细介绍UITextView的基本特性和常见用法。

  1. 初始化与属性设置

初始化UITextView可以通过代码或Storyboard完成。在代码中,可以使用init(frame:)init(coder:)方法创建实例。例如:


let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))

UITextView有许多可配置的属性,如text(文本内容)、font(字体)、textColor(文字颜色)和textAlignment(文本对齐方式)等。

  1. 禁用编辑功能

如果不希望用户编辑UITextView中的文本,可以设置isEditable属性为false


textView.isEditable = false

  1. 监听文本变化

可以通过代理方法textViewDidChange(_:)监听UITextView的文本变化,这在实时处理用户输入时非常有用:


extension ViewController: UITextViewDelegate {

    func textViewDidChange(_ textView: UITextView) {

        // 在这里处理文本变化的逻辑

    }

}

  1. 自动滚动

当文本输入超过UITextView的边界时,可以设置isScrollEnabled使文本视图自动滚动。默认情况下,此属性为true

  1. 限制最大输入行数

虽然UITextView默认无限制行数,但可以通过监听文本变化并限制高度来实现限制:


func textViewDidChange(_ textView: UITextView) {

    let maxHeight = 100 // 设置最大高度

    textView.sizeThatFits(CGSize(width: textView.frame.width, height: .greatestFiniteMagnitude))

    if textView.contentSize.height > maxHeight {

        textView.frame.size.height = maxHeight

    } else {

        textView.frame.size.height = textView.contentSize.height

    }

}

  1. 富文本支持

UITextView支持NSAttributedString,允许插入不同样式的文本,如粗体、斜体、颜色等。通过设置attributedText属性,可以实现富文本显示:


let attributedString = NSMutableAttributedString(string: "Hello, Swift!", attributes: [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18)])

textView.attributedText = attributedString

了解更多关于富文本编辑的知识,可以参考UITextView实现富文本编辑Swift优雅构建富文本

  1. 插入图片和链接

使用NSAttachment可以在UITextView中插入图片,同时通过设置attributedText中的NSLinkAttributeName属性添加链接。

  1. 占位符

UITextView为空时显示的提示文本,可以通过placeholder属性设置:


textView.placeholder = "请输入您的评论..."

  1. 自动缩放

UITextView有一个adjustsFontSizeToFitWidth属性,当设置为true时,文本会根据宽度自动调整字号以适应视图。

  1. 输入限制

可以通过shouldChangeCharactersIn(_:replacementString:)代理方法限制特定字符输入,例如数字、字母等。

  1. 键盘控制

通过becomeFirstResponderresignFirstResponder方法可以控制UITextView是否显示键盘。对于键盘关闭,还可以监听UIKeyboardWillHideNotification通知。

  1. 自动布局

UITextView在Auto Layout中需要注意高度约束的处理,通常需要在文本变化时动态更新高度约束。

想要了解更多的实用示例和代码实现?赶快下载ios富文本demo或参阅swift ios开发最新教程,开始你的开发之旅吧!这些资源将为你提供丰富的实践机会,帮助你在项目中灵活运用UITextView,提升用户体验。