У меня есть коллекция View Cell, в которой я пытаюсь разместить три ярлыка и изображение. Кажется, что вертикальный макет работает нормально, но я просто не могу представить горизонтальный макет в приемлемом состоянии - ярлыки просто не хотят работать, как хотелось бы.Программная установка ограничений компоновки в UICollectionViewCell
В основном вертикальный размер фиксирован, но у меня размер горизонтальной ячейки изменяется в зависимости от ширины экрана, но обычно около 320. Я хочу, чтобы изображение находилось в фиксированном положении, но UILabels to затем возьмите любое оставшееся пространство справа от изображения.
Я включил картину ниже моего ожидаемого расположения:
Для вертикального расположения у меня есть следующие, где этикетки 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)
Вопрос у меня, однако, что метки все еще кажется слишком далеко влево, и это уходит довольно пробел справа, как будто ширина не динамически регулируется?
Любые мысли о том, как я могу исправить это, будем очень благодарны.
Большое спасибо.
Я очень рекомендую установить ограничения в построителе интерфейса, поскольку он может автоматически обнаруживать неоднозначные ограничения. В таких случаях очень сложно сказать. Или создайте ячейку в наконечнике и загрузите ее оттуда. –