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

如何使文本在UITextView中与顶部对齐?

  •  1
  • forrest  · 技术社区  · 7 年前

    运行Xcode 8.3.3时,我有一个UITextView,它填充了整个视图。但是,文本没有与顶部对齐,但顶部有80多个填充点-请参阅随附的屏幕截图。

    任何指点都将不胜感激。

    enter image description here

    3 回复  |  直到 7 年前
        1
  •  0
  •   iOS Geek    7 年前

    好的,根据你的询问,我尝试了一种解决方案,请看看这个

    1) 这里是默认情况下获得的第一个带有空格的输出

    我使用了以下代码来显示实际发生的事情,我使用了一个从故事板上到下覆盖整个屏幕的文本视图

     //Outlet
     @IBOutlet weak var myTextView: UITextView!
    
     //call the function and assign to TextView
     override func viewWillAppear(_ animated: Bool) {
            adjustContentSize(tv: myTextView)
        }
    
        //this will Add the respected boundaries to textView content 
        func adjustContentSize(tv: UITextView){
            let deadSpace = tv.bounds.size.height - tv.contentSize.height
            let inset = max(0, deadSpace/2.0)
    
            tv.contentInset = UIEdgeInsetsMake(inset, tv.contentInset.left, inset, tv.contentInset.right)
        }
    
        //Will check when value is changed
        func textViewDidChange(_ textView: UITextView) {
            self.adjustContentSize(tv: textView)
        }
    

    enter image description here

    --代码

    //Outlet
     @IBOutlet weak var myTextView: UITextView!
    
     //call the function and assign to TextView
     override func viewWillAppear(_ animated: Bool) {
            adjustContentSize(tv: myTextView)
        }
    
    //this will Add the respected boundaries to textView content 
        func adjustContentSize(tv: UITextView){
            tv.contentInset = UIEdgeInsetsMake(0, tv.contentInset.left, 0,tv.contentInset.right)
        }
    
        //Will check when value is changed
        func textViewDidChange(_ textView: UITextView) {
            self.adjustContentSize(tv: textView)
        }
    

    --预期输出

    enter image description here

        2
  •  0
  •   forrest    7 年前

    这个问题与自动布局有关。如果您查看问题中textView屏幕截图的位置,您可以看到textView是相对于导航栏而不是视图定位的。通过向上移动顶部位置(参见下面的屏幕截图),解决了文本对齐问题。 enter image description here

        3
  •  0
  •   atish vishwakarma    5 年前

    使用TextContainerSet将文本与textView顶部对齐 textView.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

    如果只想更改顶部插入,可以使用现有TextContainerSet中的左、下和右插入。