2015-06-24 3 views
0

Я пытаюсь программным образом добавить представление в UIScrollView таким образом, чтобы при изменении размера подзаголовка пользовательский интерфейс UIScrollView автоматически сопоставлялся.Установить ограничения на представление, которое добавлено в UIScrollView?

Я попытался это:

private var _contentView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 

addSubview(_contentView) 



let leading = NSLayoutConstraint(item: _contentView, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0) 
let trailing = NSLayoutConstraint(item: _contentView, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0) 
let top = NSLayoutConstraint(item: _contentView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0) 
let bottom = NSLayoutConstraint(item: _contentView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0) 

self.addConstraints([leading,trailing,top,bottom]) 

Но я получаю сообщение об ошибке во время выполнения примерно не в состоянии удовлетворять ограничения.

Я также попытался установить ограничение с визуальным форматом и получить подобную ошибку:

let viewsDictionary = ["contentView":_contentView] 

let hConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[contentView]-0-|", options: NSLayoutFormatOptions.DirectionLeadingToTrailing, metrics: nil, views: viewsDictionary) 
let vConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[contentView]-0-|", options: NSLayoutFormatOptions.DirectionLeadingToTrailing, metrics: nil, views: viewsDictionary) 

self.addConstraints(hConstraints) 
self.addConstraints(vConstraints) 

Как правильно добавить ограничение?

ответ

0

Попробуйте установить translatesAutoresizingMaskIntoConstraints на NO/false в вашем содержании.

В случае прокрутки в представлениях должен быть встроенный размер содержимого или явные ограничения ширины и высоты, чтобы позволить прокрутку определять размер его содержимого.

Так что попробуйте добавить ограничения ширины и высоты в свой контентный вид.

+0

Это избавляет от ошибки, но не делает contentSize подходящим для размера subview. –

+0

@AaronBratcher см. Мое редактирование. – rounak

+0

Я устанавливаю размер рамки подзаголовка, а затем вызываю requireUpdateConstraints() для каждого. –

Смежные вопросы