Добавить ограничения программно в ViewControllerCells

Создание меню "Карточный стиль" с CollectionViewCells, и мне нужно, чтобы ячейки имели одинаковое пространство между |------| в любом размере экрана.

Я смог добраться до этой точки:

addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-15-[v0]-15-|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": appsCollectionView]))

addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": appsCollectionView]))

Там, где я установил поля по 15 на каждой стороне экрана, но всякий раз, когда я загружаю приложение на большом экране, расстояние между ними также меняется.

Я пытался использовать:

appsCollectionView.leadingAnchor.constraint(equalTo: trailingAnchor).isActive = true

Но я получаю этот журнал:

2016-12-07 16:51:14.902586 AppStoreClone[8843:206635] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x608000283fc0 H:[UICollectionView:0x7f8172010200]-(15)-|   (active, names: '|':AppStoreClone.CategoryCell:0x7f8173309710 )>",
    "<NSLayoutConstraint:0x608000284100 H:[AppStoreClone.CategoryCell:0x7f8173309710]-(0)-[UICollectionView:0x7f8172010200]   (active)>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x608000284100 H:[AppStoreClone.CategoryCell:0x7f8173309710]-(0)-[UICollectionView:0x7f8172010200]   (active)>

1 ответ

Поместите ваши элементы управления в Stack View и внедрите Auto Layout.

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/LayoutUsingStackViews.html

Другие вопросы по тегам