ios – 如何在SWIFT中调整文本视图的高度?

在我的视图控制器中,我有一个UITextView.这个文本视图用一个字符串填充.字符串可以是短的或长的.根据字符串的长度,textview的高度必须调整.
我使用故事板和汽车布局.

我对文本视图的高度有些麻烦.

有时,高度是完美的调整文本.有时候,不,文字被裁剪在第一行.下面,textview是黄色的.蓝色是scrollview中的容器视图.紫色是照片的地方.

文本来自我的核心数据库,它们是字符串属性.
在屏幕1和2之间,唯一改变的是字符串.
如果我在控制台中打印字符串,我有正确的文本:

my amazing new title

Another funny title for demo

我的textview的限制:

我不明白为什么我有2个不同的显示.

编辑

我试过@Nate的建议,在viewDidLoad中,我补充说:

myTextViewTitle.text="my amazing new title"

    myTextViewTitle.setContentHuggingPriority(1000,forAxis: UILayoutConstraintAxis.Vertical)
    myTextViewTitle.setContentCompressionResistancePriority(1000,forAxis: UILayoutConstraintAxis.Vertical)
    myTextViewTitle.setTranslatesAutoresizingMaskIntoConstraints(false)  

    let views = ["new_view": myTextViewTitle]
    var constrs = NSLayoutConstraint.constraintsWithVisualFormat("|-8-[new_view]-8-|",options: NSLayoutFormatOptions(0),metrics: nil,views: views)
    self.view.addConstraints(constrs)
    self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-8-[new_view]",views: views))
    self.myTextViewTitle.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[new_view(220@300)]",views: views))

没有结果.在界面构建器中为我的textview添加或不添加高度约束

编辑2

我需要一个UITextView而不是一个UIlabel,因为后退按钮,要使用排除路径.

let exclusionPathBack:UIBezierPath = UIBezierPath(rect: CGRect(x:backButton.bounds.origin.x,y:backButton.bounds.origin.y,width:backButton.bounds.width+10,height:backButton.bounds.height))
     myTextViewTitle.textContainer.exclusionPaths=[exclusionPathBack]

解决方法

我找到了一个解决方案.

我专注于我的UITextView的高度,然后我读了一篇关于长宽比的帖子.我想尝试和工作!

所以在故事板中,我为textview添加一个宽高比,我选中了“在构建时删除”选项.

在viewDidLayoutSubviews()中,我写道:

override func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews()

    let contentSize = self.myTextViewTitle.sizeThatFits(self.myTextViewTitle.bounds.size)
    var frame = self.myTextViewTitle.frame
    frame.size.height = contentSize.height
    self.myTextViewTitle.frame = frame

    aspectRatioTextViewConstraint = NSLayoutConstraint(item: self.myTextViewTitle,attribute: .Height,relatedBy: .Equal,toItem: self.myTextViewTitle,attribute: .Width,multiplier: myTextViewTitle.bounds.height/myTextViewTitle.bounds.width,constant: 1)
    self.myTextViewTitle.addConstraint(aspectRatioTextViewConstraint!)

}

它工作完美.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...