[swift]TextContainer 不更改 UITextView 边界时调整大小

标签: UITextView ios Swift
发布时间: 2016/2/21 16:37:17
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在调整大小 textView 后, 我要 textContainer (我想要调整大小的 textView 宽度相同文本) 的相同大小为 textView。所以做现在是我创建 UITextView 以编程的方式,然后通过改变它的界限 (有或无内 textView 文本) 调整 textView 但 textContainer 保持相同的大小与 (文本是在较小的矩形比 textView,看起来很糟糕)。

下面是一些代码:

let textStorage = NSTextStorage()

let layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)

let textContainer = NSTextContainer()
layoutManager.addTextContainer(textContainer)

textContainer.widthTracksTextView = true
textContainer.heightTracksTextView = true

self.textView = UITextView(frame: textViewFrame, textContainer: textContainer)

及更高版本:

self.textView.bounds = CGRect(x, y, newWidth, newHeight)

我目前没有新的主意,为什么它不工作,不能找到解决办法。

解决方法 1:

把这个扔在操场上。评出/以不同的方式设置 textView 的大小。设置 bounds 的确不更新容器设置 framesize 并。

import Foundation
import UIKit
import XCPlayground

var str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean feugiat purus a pharetra rhoncus. Phasellus eget velit risus. Duis varius et massa non pretium. Praesent sollicitudin egestas mi, non cursus eros ornare congue. Pellentesque ex leo, hendrerit posuere euismod ut, ultricies eleifend lectus. Phasellus eu interdum sem. Quisque ut condimentum justo. Integer non neque mauris. Vestibulum eu tellus ac nunc mollis maximus a vitae lectus. In hac habitasse platea dictumst. Sed neque sapien, elementum quis volutpat quis, dictum id ligula. Cras egestas finibus fermentum."

let textViewFrame = CGRectZero

let textStorage = NSTextStorage()

let layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)

let textContainer = NSTextContainer(size: textViewFrame.size)
layoutManager.addTextContainer(textContainer)

textContainer.widthTracksTextView = true
textContainer.heightTracksTextView = true

var textView = UITextView(frame: textViewFrame, textContainer: textContainer)
XCPShowView("MyView", view: textView)

textView.text = str

//textView.bounds = CGRect(x: 0, y: 0, width: 200, height: 200)
//textView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
textView.frame.size = CGSize(width: 200, height: 200)

//textView.bounds = CGRect(x: 0, y: 0, width: 400, height: 200)
//textView.frame = CGRect(x: 0, y: 0, width: 400, height: 200)
textView.frame.size = CGSize(width: 400, height: 200)

未来的读者,如果你在这里是因为你旋转 UITextView:变换 UITextView

官方微信
官方QQ群
31647020