2016-11-17 4 views
3

Ну, в коде я добавил 4 ограничения. Но когда я запускаю приложение, в отладчике пользовательского интерфейса, он показывает дополнительные 6 ограничений? Должно быть все ясно с этими 4 я добавил, я не знаю, что я делаю неправильно?XCode добавляет дублирующие ограничения?

let leftConstr = NSLayoutConstraint(item: image, attribute: .leading, relatedBy: .equal, toItem: cell.contentView, attribute: .leading, multiplier: 1.0, constant: 0.0) 
let bottomConstr = NSLayoutConstraint(item: image, attribute: .bottom, relatedBy: .equal, toItem: cell.contentView , attribute: .bottom, multiplier: 1.0, constant: 0.0) 
let highthConstr = NSLayoutConstraint(item: image, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 15) 
let widthConstr = NSLayoutConstraint(item: image, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 50) 
cell.contentView.addConstraints([highthConstr, widthConstr, bottomConstr, leftConstr]) 

Вот скриншот моего пользовательского интерфейса отладчика

https://i.stack.imgur.com/3fzc2.png

+1

Я видел, как это произошло. Если я попытаюсь сделать мои ограничения программными, кажется, что он автогенерирует те, которые я не создаю, чтобы заставить сценарий работать. Может быть, «translatesAutoresizingMaskIntoConstraints» - это то, что сделал. – Sethmr

ответ

4

Может быть, вы можете попробовать добавить эту строку кода перед:

image.translatesAutoresizingMaskIntoConstraints = false 
+1

Это решение! Спасибо @Matthias –

0

Вы настраиваете контрсилами дважды , Один раз в коде (см. Ваш вопрос) один раз в раскадровке (см. Скриншот в вашем вопросе, imageView.bottom ...).

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

+2

Это скриншот моего отладчика ui, а не UI Builder, сделанный во время выполнения, я хочу установить все ограничения в коде. :) –

+0

Пожалуйста, покажите тот, который находится в Раскадке, чем, а также инспектор размера imageView. – shallowThought

+0

В раскадровке ничего нет. Непонятно, просто пустая коллекцияView. Я добавляю этот объект UIImageView в UICollectionView Delegate с именем: cellForItemAt. –

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