2015-02-04 4 views
0

У меня есть прокрутка и внутри него - изображение в раскадровке. У меня есть iboutlets к файлу, в котором находится этот код со ссылками на эти представления. Их называют scrollView и соответственно. Я пытаюсь программно добавить много UILabels под графиком внутри scrollview, но я даже не могу его отобразить.Добавление UILabel для прокруткиView Programmatically с помощью AutoLayout (swift)

Ограничение ширины, которое я добавил, не вызывает никаких проблем, но остальные три ограничения получают ошибки времени выполнения, содержащие The view hierarchy is not prepared for the constraint. Я хочу ограничить верхнюю часть метки до нижней части графика, слева от метки слева от scrollview, а нижнюю часть метки - в нижней части прокрутки. Что я делаю не так?

Обновленный код:

var noteBodyLabel = UILabel() 
    noteBodyLabel.text = "test asdf asd fasdf a sdf asdf as dfa sdf safd" 

    noteBodyLabel.setTranslatesAutoresizingMaskIntoConstraints(false) 



    var widthCons = NSLayoutConstraint(
    item: noteBodyLabel, 
    attribute: .Width, 
    relatedBy: .Equal, 
    toItem: nil, 
    attribute: .NotAnAttribute, 
    multiplier: 1, constant: 280) 


    let topCons = NSLayoutConstraint(
    item: noteBodyLabel, 
    attribute: .Top, 
    relatedBy: .Equal, 
    toItem: graph, 
    attribute: .Bottom, 
    multiplier: 1, constant: 0); 


    let bottomCons = NSLayoutConstraint(
    item: noteBodyLabel, 
    attribute: .Bottom, 
    relatedBy: .Equal, 
    toItem: scrollView, 
    attribute: .Bottom, 
    multiplier: 1, constant: 0); 

    let leftCons = NSLayoutConstraint(
    item: noteBodyLabel, 
    attribute: .Left, 
    relatedBy: .Equal, 
    toItem: scrollView, 
    attribute: .Left, 
    multiplier: 1, constant: 0); 

    scrollView.addSubview(noteBodyLabel) 
    noteBodyLabel.addConstraints([topCons,leftCons,bottomCons,widthCons]) 
+2

Ошибки связаны с тем, что вы создаете ограничения между двумя представлениями, которые не находятся в одном и том же дереве. Перед добавлением ограничений вызовите 'scrollView.addSubview (noteBodyLabel)'. –

+0

@AaronBrager посмотрим на мой обновленный код. Это все еще происходит. – maxhud

+0

«Не подготовлено к ограничению» означает, что один вид в ваших ограничениях не был добавлен в иерархию представлений. Вы уверены, что все представления были добавлены в виде подпунктов? –

ответ

0

я обнаружил, что мне пришлось добавить ограничения на self.view, не Примечание1 или любой из других элементов.

var note1 = UILabel() 
    note1.text = "test asdf asd fasdf a sdf asdf as dfa sdf safd" 

    note1.setTranslatesAutoresizingMaskIntoConstraints(false) 
    scrollView.addSubview(note1) 

    var widthCons = NSLayoutConstraint(
    item: note1, 
    attribute: .Width, 
    relatedBy: .Equal, 
    toItem: nil, 
    attribute: .NotAnAttribute, 
    multiplier: 1, constant: 280) 


    let topCons = NSLayoutConstraint(
    item: note1, 
    attribute: .Top, 
    relatedBy: .Equal, 
    toItem: graph, 
    attribute: .Bottom, 
    multiplier: 1, constant: 0); 

    let bottomCons = NSLayoutConstraint(
    item: note1, 
    attribute: .Bottom, 
    relatedBy: .Equal, 
    toItem: scrollView, 
    attribute: .Bottom, 
    multiplier: 1, constant: 0); 

    let leftCons = NSLayoutConstraint(
    item: note1, 
    attribute: .Left, 
    relatedBy: .Equal, 
    toItem: scrollView, 
    attribute: .Left, 
    multiplier: 1, constant: 0); 

    self.view.addConstraints([topCons, bottomCons, leftCons, widthCons]) 
Смежные вопросы