0

У меня есть коллекция View Cell, в которой я пытаюсь разместить три ярлыка и изображение. Кажется, что вертикальный макет работает нормально, но я просто не могу представить горизонтальный макет в приемлемом состоянии - ярлыки просто не хотят работать, как хотелось бы.Программная установка ограничений компоновки в UICollectionViewCell

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

Я включил картину ниже моего ожидаемого расположения:

enter image description here

Для вертикального расположения у меня есть следующие, где этикетки l1 до l3 и изображение i1:

Чтобы ограничить 20px изображения из верхних:

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[i1(42)]", options: nil, metrics: nil, views: dictionaryOfViews)) 

Чтобы ограничить метки вертикально в фиксированной ячейке 134 высоты:

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-20-[l1(21)][l2(21)]-10-[l3(42)]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 

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

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[i1(42)]", options: nil, metrics: nil, views: dictionaryOfViews)) 
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-82-[l1]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-82-[l2]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-82-[l3]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 

Который почти работает. Я должен был установить следующее, чтобы получить ярлык многострочного вести себя тоже:

descriptionLabel.setContentCompressionResistancePriority(0, forAxis: .Horizontal) 

Вопрос у меня, однако, что метки все еще кажется слишком далеко влево, и это уходит довольно пробел справа, как будто ширина не динамически регулируется?

Любые мысли о том, как я могу исправить это, будем очень благодарны.

Большое спасибо.

+1

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

ответ

0

Просто мысль здесь ... вы пытались установить левую сторону метки в правой части изображения?

contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[i1]-20-[l1]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[i1]-20-[l2]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[i1]-20-[l3]-20-|", options: nil, metrics: nil, views: dictionaryOfViews)) 
+0

Привет, спасибо. Да, я должен был упомянуть, что я пробовал это ... Я получаю тот же результат, но, к сожалению, просто слишком много места вправо ... Почти как если бы размер ячейки был неправильным ... – Darren

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