旋转时文本在 UITextView 行尾之前中断到下一行

Text breaking onto next line in before end of line of UITextView when rotated

我试图创建一个文本视图,旋转它并在其中显示一些文本。我可以创建和旋转 UITextView,但在我的 UITextView 中,文本在行尾之前中断到下一行。

    let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 300, height: 200))
    textView.transform = CGAffineTransform(rotationAngle: .pi / 2)
    textView.text = "This is some long sample text to show the issue I am facing.  Notice that the text is broken onto the next line well before the end of the UITextView."
    
    textView.backgroundColor = .red
    textView.center = view.center
    
    view.addSubview(textView)

问题:


确定问题

但是,如果我不旋转 textview(通过注释掉上面的以下行),文本不会在 UITextView 结束之前中断到下一行。所以,问题似乎是旋转图片引起的,但我不明白为什么或如何解决这个问题。

textView.transform = CGAffineTransform(rotationAngle: .pi / 2)

为什么文本仅在旋转时才在 UITextView 中间换行,如何解决这个问题?

您可以通过执行以下操作来防止此问题:

  1. 创建新视图 (myView)
  2. 创建文本视图 (myTextView)
  3. 将 myTextView 添加到 myView
  4. 旋转我的视图

// create a new view
let myView = UITextView(frame:CGRect(x: 0, y: 0, width: view.frame.height-200, height: view.frame.width-200)) // this frame will have 100px margin on the top & bottom as well as on the left & right once rotated

// create a new textview
let myTextView = UITextView(frame:CGRect(x: 0, y: 0, width: scrollOutlet.frame.height-messageMarginTop*2, height: scrollOutlet.frame.width-messageMarginLeft*2))
myTextView.text = "This is some long sample text to show the resolved issue. Notice that the text will no longer be broken onto the next line before the end of the UITextView.. Enjoy!"

// add the new text view to the myView
myView.addSubview(myTextView)

// rotate the myView
myView.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2)

// center myView in ViewController's view
myView.center.x = view.center.x
myView.center.y = view.center.y

self.view.addSubview(myView)