代码之家  ›  专栏  ›  技术社区  ›  Rbar

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

  •  1
  • Rbar  · 技术社区  · 8 年前

    我试图创建一个文本视图,旋转它,并在其中显示一些文本。我可以创建和旋转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)
    

    问题:

    Issue


    确定问题

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

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

    为什么文本仅在旋转时才会断开到UITextView中间的下一行,如何解决此问题?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Rbar    8 年前

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

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

    // 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)