I have the following two views :
let captionTextView: UITextView = {
let textField = UITextView(frame: CGRectMake(0,0, 250, 100))
textField.text = "Enter caption..."
textField.textColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0)
textField.editable = true
textField.backgroundColor = UIColor.blueColor()
textField.layer.cornerRadius = 5
textField.layer.borderColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0).CGColor
textField.layer.borderWidth = 1
textField.font = UIFont.boldSystemFontOfSize(15)
return textField
}()
let infoLabel : UILabel = {
let myLabel = UILabel()
myLabel.textColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0)
myLabel.text = "Testing"
myLabel.font = UIFont.systemFontOfSize(16.0)
myLabel.textAlignment = NSTextAlignment.Center
myLabel.adjustsFontSizeToFitWidth = true
return myLabel
}()
I am adding them to my view Controller with the following constraints :
func setupViews() {
self.view.addSubview(captionTextView)
self.view.addSubview(infoLabel)
infoLabel.translatesAutoresizingMaskIntoConstraints = false
captionTextView.translatesAutoresizingMaskIntoConstraints = false
self.view.addConstraint(NSLayoutConstraint(item: infoLabel, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 35))
self.view.addConstraint(NSLayoutConstraint(item: infoLabel, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1, constant: 10))
self.view.addConstraint(NSLayoutConstraint(item: infoLabel, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1, constant: -10))
self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Top, relatedBy: .Equal, toItem: infoLabel, attribute: .Top, multiplier: 1, constant: 35))
self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1, constant: 10))
self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1, constant: -10))
}
The label shows properly where I want it to be. The textView is not visible on screen at all. If I change its type to a textField or a UILabel it works perfectly fine, so I don't know which constraints I am missing here. What am I missing?
答案 0 :(得分:3)
由于textView继承自UIScrollView,因此需要向textView添加底部锚。
如Apple Docs所述: https://developer.apple.com/documentation/uikit/uitextview