2

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)

現在、なぜ機能しないのか、解決策が見つからないのか、私には考えがありません。

4

1 に答える 1

6

これを遊び場に放り込みます。textView のサイズを設定するには、さまざまな方法でコメントアウト/コメントアウトします。Indeed を設定してboundsもコンテナーは更新されません。frameまたはを設定sizeします。

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 を回転させているためにここにいる場合、将来の読者: Transform UITextView

于 2015-10-02T19:18:57.557 に答える