在我的视图控制器中,我有一个UITextView。该文本视图中填充了一个字符串。字符串可以是短或长。根据字符串的长度,textview的高度必须调整。 我使用故事板和自动布局。如何在SWIFT中将文本视图的高度调整为其内容?
我有一些与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]", options: NSLayoutFormatOptions(0), metrics: nil, views: views))
self.myTextViewTitle.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[new_view([email protected])]", options: NSLayoutFormatOptions(0), metrics: nil, views: views))
没有结果。带或不带高度contraint增加了我在Interface Builder的TextView ...
EDIT 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]
尝试SOLU这里列出:http://stackoverflow.com/questions/16009405/uilabel-sizetofit-doesnt-work-with-autolayout-ios6。 'sizeToFit'方法是要走的路,但在你的情况下你也需要约束。 – 2015-04-03 12:36:29
在UITextView中启用了滚动吗? – Abdullah 2015-04-03 15:43:25
@NateLee,这个解决方案是针对UILabel的。我使用UITextView。 – cmii 2015-04-03 16:26:51