Я пытаюсь создать галерею в своем быстром приложении iOS, которое напоминает стиль, что делает Trover, поэтому в основном я хочу иметь массив изображений, указывать максимальное количество изображений, чтобы они соответствовали одна строка, а затем я хочу динамически генерировать UIImageViews
с размером кадра, определяемым кодом для создания эффекта коллажа ниже. Я знаю, что это можно сделать в android, используя recyclerView
, однако я не уверен, что лучший подход для этого в iOS, я знаю, что я могу использовать TableView, CollectionView или StackView, однако я не уверен, что самый простой подход к этому быть ... то, как я использовал CollectionViews
в прошлом, это то, что у них был статический размер для CollectionViewCell
, поэтому я не уверен, как их адаптировать для этой цели.Создание галереи стиля Trover iOS Swift
ответ
От спекуляций на изображении данного, мы можем предположить, что каждые 4 пунктов, расположение и тот же. Таким образом, мы можем использовать UICollectionView
и мы могут (Примечание в конце ответа) просто переопределить collectionView:layout:sizeForItemAtIndexPath:
с помощью следующего кода в Objective-C, но логика такая же в Swift:
CGFloat wholeWidthAvailable = collectionView.frame.size-interspace; //Since we only show 2 item per line, there is only 1 interspace
CGFloat height;
switch (indexPath.row%2)
{
case 0:
height = 100;
break;
case 1:
height = 200;
break;
default:
break;
}
CGFloat width;
switch (indexPath.row%4)
{
case 0:
width = wholeWidthAvailable*2./5.;
break;
case 1:
width = wholeWidthAvailable*3./5.;
break;
case 2:
width = wholeWidthAvailable*3./5.;
break;
case 3:
width = wholeWidthAvailable*2./5.;
break;
default:
break;
}
return CGSizeMake(width, height);
Примечание:
Код не проверен (я написал его здесь, я не знаю, если он скомпилирован как таковой).
Я явно написал два корпуса коммутатора, но он явно может быть использован в одном, поскольку по модулю 2 и по модулю 4 могут быть «соединены».
Я выбрал 2/5 и 3/5, чтобы поместиться в ширину (но вы можете четко указать пропорцию, которая вам понравится).
Если бы я хотел сделать это более сложными и, например, могут быть 4 возможных макета, один с 2 изображениями, 3, 4 и 5 и случайным образом изменяться между ними, было бы проще сделать это в классе collectionViewCell или в методах делегата collectionView, как вы предложили выше – Alk
- 1. Создание треугольника ios swift View
- 2. Создание галереи Android-галереи выглядит более красиво
- 3. Создание собственного стиля стиля Tinyurl
- 4. Создание стиля ответа стиля SO
- 5. Создание простой галереи видео
- 6. Создание скользящей галереи изображений
- 7. Создание галереи изображений, как?
- 8. Создание галереи обновлений
- 9. Создание постраничной галереи
- 10. Создание галереи изображений
- 11. Создание галереи в Rails
- 12. swift iOS: Получить изображение из галереи по дате создания
- 13. Как получить URL-адрес изображения галереи изображений iOS Swift?
- 14. IOS прокрутки галереи
- 15. Создание таблицы из запроса Firebase (iOS, Swift)
- 16. Создание линейного графика с iOS Swift
- 17. Создание пользовательского каталога в iOS Swift 2.2
- 18. Создание коллекции textFields в IOS/Swift
- 19. Создание приложения Compass iOS в Swift
- 20. Создание пользовательской галереи - переопределение onFling
- 21. Создание пользовательской области галереи PHP?
- 22. создание галереи с дисплеем нет
- 23. php mysql: создание галереи изображений
- 24. Создание отзывчивой галереи HTML/CSS
- 25. Создание галереи с реакцией native
- 26. Создание эскизов для галереи изображений
- 27. Как начать создание галереи HTML5
- 28. Получить изображение из галереи iOS?
- 29. Создание меню стиля Dropline
- 30. Создание стиля Flot график
С помощью UICollectionView вы можете использовать собственный макет. Кажется, с вашего снимка экрана (я не использую приложение, простые спекуляции), что есть только 2 типа линий, поэтому вам даже не нужно создавать весь собственный макет. Просто указывая размер элемента, в соответствии с его индексной строкой (здесь я бы сказал, что каждые 4 ячейки, это одинаковый размер), этого должно быть достаточно. – Larme
Вы предлагаете, что позволяет сказать, что блок фотографий - это один 'UICollectionViewCell', и в зависимости от того, как я хочу, чтобы макет был, я динамически создаю imageViews внутри этой ячейки? Так, например, ячейка может иметь 2 'ImageViews' или 4' ImageViews' и т. Д., И я просто произвольно выбираю, какой дизайн мне нужен? – Alk
Я добавил пример кода для UICollectionView (в Objective-C, но логика должна быть одинаковой, и нет ничего действительно сложного, кроме, может быть, «модуля», но все остальное выглядит как Swift. – Larme