如何让TextView能够水平滚动

Mic*_*oos 9 uiscrollview uitextview ios swift

我知道TextView它嵌入了一个ScrollView.如果有一个相当长的String(其中包含否"\n")

TextView将自动进行线缠绕,根据的的宽度TextView.

如果TextView高度很短,那么我们可以垂直滚动它.你如何禁用自动换行?这样,如果没有遇到"\n",它就不会换行.相反,它允许用户水平滚动以查看文本.

我该如何实现呢?

Mic*_*oos 5

在你们的许多帮助下,我想出了如何做到这一点:D,谢谢,我们开始吧!

1.所以,首先,我们需要一个longlonglong String,对吧?

let displayStr = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 "
Run Code Online (Sandbox Code Playgroud)

2.假设我们有一个 UIScrollView,它@IBOutlet通过调用链接或获取.viewWithTag(xxx)。我们将其命名为scroll

3.是时候获取我们的字符串的大小了,这是我们将使用的一个关键函数:

哦!我几乎忘记定义我们将使用的字体类型(这是一个关键参数),以及字符串大小的最大大小是多少

let maxSize = CGSizeMake(9999, 9999)
let font = UIFont(name: "Menlo", size: 16)!
//key function is coming!!!
let strSize = (displayStr as NSString).boundingRectWithSize(maxSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : font], context: nil)
Run Code Online (Sandbox Code Playgroud)

4.好的,现在我们可以将字符串放入 textView 中,您需要以编程方式创建一个 new UITextView,以便我们可以定义与字符串大小相同的框架(哦,也许更大一点:D):

let frame = CGRectMake(0, 0, size.width+50, size.height+10)
let textView = UITextView(frame: frame)
textView.editable = false
textView.scrollEnabled = false//let textView becomes unScrollable
textView.font = font
textView.text = displayStr
Run Code Online (Sandbox Code Playgroud)

5.回到我们的scroll,我们将其设置为contentSize

scroll.contentSize = CGSizeMake(size.width, size.height)

6.最后,添加Subview: scroll.addSubview(textView)

你可以看到,textView 被嵌入在一个 scrollView 中,它允许它向 2 个方向滚动。

顺便说一句,我的实现只是静态字符串的演示。如果您希望用户使用不输入任何“\n”就不会换行的 textView,您可能需要动态计算字符串大小。:D

[我希望这个能帮上忙]