Я пытаюсь воспроизвести, как приложения eBay iOS отображает свои изображения и позволяет пользователям расширять каждое изображение.
Вот как это работает:
eBay использует a UICollectionView
для отображения списка изображений. Когда пользователь выбирает ячейку, она расширяется с помощью кнопок в верхней части. Если выбран параметр X, ячейка снова сжимается до исходного размера.
Как я могу достичь чего-то подобного?
Я посмотрел на вопросы UICollectionView увеличить ячейку на выбор и расширение UICollectionView и его ячейку при нажатии и пытался реализовать его с моими собственными идеями.
Одна из проблем заключается в том, что у меня есть дизайн AutoLayout, и это делает это довольно сложным.
Вот моя раскадровка:
Я пробовал это:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
let cell = collectionView.cellForItem(at: indexPath)
cell?.superview?.bringSubview(toFront: cell!)
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: ({
self.structureImageView.frame = CGRect(x: 0, y: 0, width: 375, height: 667)
collectionView.frame = self.structureImageView.bounds
cell?.frame = collectionView.bounds
self.separatorView.frame.origin.y = 667
self.structureInfoView.frame.origin.y = 667
}), completion: nil)
test = true
collectionView.reloadData()
}
var test = false
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
if test == true
{
return CGSize(width: 375, height: 667)
}
return CGSize(width: cellWidth!, height: cellHeight!)
}
И результат:
Любая помощь очень поможет!
Ниже приведены шаги, которые вы можете достичь этого:
Допустим, у вас есть два ViewController
FirstViewController
, где у вас есть изображение вверху иFullImageVC
где у вас есть изображение в центре.viewWillAppear:
ИзFullImageVC
вам нужно написать логику для двух вещей:Первый
Поместите изображение поверх
FullImageVC
такого же, как вы его разместили,FirstViewController
и передайте то же изображение, которое вы постучалиFirstViewController
, и напишите логику, чтобы оживить его сверху до центра.Второй
Как только анимация завершена показать Ваш
CollectionView
, который будет иметь все изображения и показать выбранный.4.Поместите крестик и напишите свое действие, чтобы уволить
FullImageVC
.