UITextVIew not visible on Screen

时间:2016-06-04 16:59:33

标签: ios swift uitextview nslayoutconstraint

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?

1 个答案:

答案 0 :(得分:3)

由于textView继承自UIScrollView,因此需要向textView添加底部锚。

如Apple Docs所述: https://developer.apple.com/documentation/uikit/uitextview