在我的视图控制器中,我有一个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!) }
它工作完美.