我有UIImageView
和UILabel
。标签的高度比图像高,所以我想将两个中心对齐Y位置。
这是原始案例:
当我将中心Y 从图像应用到标签时,标签内容会被截断。
请有人指导我正确的约束......谢谢!
答案 0 :(得分:1)
我在故事板中使用上面的设置。左侧是UIImageView
,右侧是UITextView
;在UIViewController
中设置。我设置了这样的约束:
UIImageView
UITextView
中心Y约束会使UIImageView
以UITextView
为中心。 UITextView
上的顶部空间约束将设置视图的垂直位置。 UITextView
上的高度约束是动态高度部分的来源。为视图控制器建立UITextView
和文本视图高度约束的出口。同时将自己设置为文本视图的委托。这将允许我们在文本视图中的文本发生更改时动态更改所有内容。
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var textViewHeight: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
self.textView.delegate = self
}
func textViewDidChange(textView: UITextView) {
// Ask the text view how much size it needs to fit its content if it has to
// fit in its current width but can grow vertically as much as it needs
let sizeToFitIn = CGSizeMake(textView.bounds.size.width, CGFloat(MAXFLOAT))
let newSize = self.textView.sizeThatFits(sizeToFitIn)
self.textViewHeight.constant = newSize.height
}
}
答案 1 :(得分:0)
如果我想集中某些内容,我不会使用中心约束,因为它对我来说也不起作用,正如你所说的那样。我所做的是为X居中和顶部空间以及底部空间添加约束前导空间和尾随空间以进行Y居中。
这将使您的标签在左侧和右侧的30px空间居中。如果你想使用整个空间,只需将常数设为0.(对于Y,只需更改另外两个 - >注意激活约束,你必须点击红线)