2016-11-26 3 views
1

Недавно я реализовал представление коллекции в приложении, единственная проблема, с которой я столкнулся, заключается в том, что просмотр коллекции идет от 2 столбцов до 1 столбца на небольших устройствах с большим количеством дополнений с обеих сторон.Swift 3 CollectionView масштабирование

Heres на экране меньше, чем в iPhone 6: enter image description here

и вот как это выглядит на экране большего или равного к iPhone 6: enter image description here

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

ответ

2

Вы должны вычислить ячейку width.Try этот код.

class YourClass: UIViewController { 
     //MARK:-Outlets 
     @IBOutlet weak var yourCollectionView: UICollectionView! 

     //Mark:-Variables 
     var cellWidth:CGFloat = 0 
     var cellHeight:CGFloat = 0 
     var spacing:CGFloat = 12 
     var numberOfColumn:CGFloat = 2 


     //MARK:-LifeCycle 
     override func viewDidLayoutSubviews() { 
      super.viewDidLayoutSubviews() 

      yourCollectionView.contentInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing) 

      if let flowLayout = yourCollectionView.collectionViewLayout as? UICollectionViewFlowLayout{ 
       cellWidth = (yourCollectionView.frame.width - (numberOfColumn + 1)*spacing)/numberOfColumn 
       cellHeight = cellWidth //yourCellHeight = cellWidth if u want square cell 
       flowLayout.minimumLineSpacing = spacing 
       flowLayout.minimumInteritemSpacing = spacing 
      } 
     } 

    extension YourClass:UICollectionViewDelegateFlowLayout{ 
      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
       return CGSize(width: cellWidth, height: cellHeight) 
      } 
    } 
+0

Вы можете объяснить для коллекции в одной строке и изменить высоту ячеек? пожалуйста? –

2

Вам нужно рассчитать свои размеры в зависимости от размера телефона - если ширина двух ячеек больше, чем размер экрана (включая все смещения между ними), они будут располагаться как на первом снимке.

У вас есть два варианта: Один из них касается размеров и масштабирования ячеек в соответствии с размером устройства Два оставляйте его как есть - внесите небольшие изменения для iphone6 ​​/ 6s/7.

Если вы отказались от первого, вам нужно будет установить ограничение для этих размеров - соотношение сторон или центр по горизонтали (что может немного обрезать изображение).

Для изменения размеров динамически, посмотрите на: https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout

Более конкретно: https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout/1617708-collectionview

+0

ничего не меняется, когда я пытаюсь изменить размер динамически:/ –

+0

Включили ли вы смещение от сторон и расстояния между ячейками? Вы можете легко проверить, но установив ширину до 20 или что-то подобное – Miknash

+0

@NickCatib Просьба предоставить ему код, а не ссылки. –

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