Я новичок в разработке iOS, и я разрабатываю приложение для покупки/продажи. Я пытаюсь создать представление коллекции, где я не устанавливаю размер ячейки представления коллекции. Вместо этого это будет зависеть от пользователя, который публикует то, что они продают. Я понял, что при жестком кодировании размеров ящиков все выглядит «квадратно». Любые предложения будут ценны.Пользовательская коллекция view cell in swift
ответ
Предполагая, что вы используете раскладку потока по умолчанию, есть два варианта:
Вы можете иметь самостоятельно проклейку клетку, если вы:
определяет однозначные ограничения между вашей ячейкой и его подпункты;
не определяют ограничения фиксированной ширины/высоты для изображения;
установить
estimatedItemSize
из вашихUICollectionViewFlowLayout
:let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout layout.estimatedItemSize = CGSize(width: 100, height: 100)
Авто макет будет затем изменить вид изображения, чтобы подогнать изображение, а ячейка будет изменять размеры себя, чтобы соответствовать, что, соответственно. Так, например, с некоторыми случайными размерами изображения, стандартная раскладка поток будет автоматически изменять размеры ячеек для нас:
Теперь это простая клетка со случайно размера, твердого цветного изображения в изображении вид и ограничения
H:|[imageView]|
иV:|[imageView]|
, но та же идея работает и со сложными ячейками. Вам просто нужно убедиться, что верхние/нижние и ведущие/конечные ограничения ячеек недвусмысленны.Обратите внимание, что если вы полагаетесь на неявный размер изображения, это предполагает, конечно, что изображения уже имеют размерность для устройства. Если нет, вы можете создать ограничения для высоты/ширины изображения, включите в них
@IBOutlet
ссылки, а затем установитеconstant
для этих ограничений в вашем методеcellForRowAtIndexPath
. Но, чтобы эффективно управлять памятью, вы вообще хотите уменьшить размер изображений до нужного размера, так что это вообще не нужно.В качестве альтернативы вы можете указать делегат (
UICollectionViewDelegateFlowLayout
) раскладки потока, а затем реализоватьsizeForItemAt:
.
спасибо за долю, это действительно помогло мне разобраться с Collectionveiwlayout. Поэтому я хочу, чтобы ширина ячейки оставалась неизменной, но высота может быть динамически изменена. Должен ли я просто установить ограничение ширины для каждого окна? –
Да, вы можете просто установить ограничение ширины. Но я бы тогда не полагался на автоматическую компоновку, сочетающую это исправление с ограничением плюс вычисление высоты изображения неявно из комбинации не только размеров изображения, но также и ограничения фиксированной ширины. (Это действительно замечательно, но это не идеально.) Итак, если у вас будет ограничение фиксированной ширины, я бы добавил выход к ограничению высоты и установил его 'constant' соответственно. Хитрость заключается в том, что ограничение динамической высоты должно иметь приоритет ниже 1000 (даже 999 достаточно). – Rob
Другая альтернатива - потерять высоту ячейки на основе ограничений и вернуться к ['sizeForItemAt:'] (https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout/1617708-collectionview). – Rob
- 1. Пользовательская коллекция view cell исчезает при нажатии
- 2. Collection View in Table View Cell
- 3. как одинарить select cell in коллекция вид ..?
- 4. Scrape Url in tableview cell in swift
- 5. Table View In Swift
- 6. update view in Swift
- 7. Popup View in Swift
- 8. Container View in Swift
- 9. Swift Collection View Custom layout change cell width in cell side
- 10. Swift 2 Table View Cell с гиперссылкой
- 11. Table View Cell Image Stretching in ipad
- 12. UICollectionview view in cell неправильный рисунок
- 13. TabGesture on View in Cell в CollectionView
- 14. Self Sizing Collection View Cell in iOS
- 15. Collection View Cell Reveal
- 16. Пользовательская кнопка Cell Нажмите
- 17. Segue из пользовательских данных Cell in Swift
- 18. No Visible View in Custom Table View Cell
- 19. UIbutton currentTitle in cell reused Swift
- 20. Switch View in AppDelegate (Swift)
- 21. Reload/Update View In Swift
- 22. Segue in swift reload view
- 23. Curved View in IOS Swift
- 24. Как правильно спроектировать UICollection View Cell в Swift
- 25. magento paginate пользовательская коллекция
- 26. Backbone.js пользовательская коллекция сортировка
- 27. Пользовательская наблюдаемая коллекция android
- 28. Пользовательская коллекция в Doctrine2
- 29. Table View Cell Reloading Issue
- 30. Конфигурация Collection View Cell
Итак, вы хотели бы отрегулировать рамку ячеек динамически? –
Вы должны проверить методы UICollectionViewFlowLayoutDelegate. – Aakash
@ EricZhang да точно –