Swift. Как сделать Карусель на UIKit с показом ОДНОЙ ячейки за раз, при этом Image не на всю ширину CollectionView по ширине (либо длине также)?

Чтобы создать карусель с показом только одной ячейки одновременно и иметь изображение, которое не занимает всю ширину collectionView, необходимо выполнить следующие шаги:

  1. Создайте новый проект Xcode и выберите шаблон "Single View App".
  2. Установите зависимость на библиотеку ImageSlideshow. Для этого добавьте следующую строку в ваш файл Podfile:
   pod 'ImageSlideshow'

Затем выполните команду pod install в терминале, чтобы загрузить библиотеку.

  1. Откройте файл ViewController.swift и импортируйте библиотеку:
   import ImageSlideshow
  1. Создайте объект ImageSlideshow и добавьте его на ваш UIViewController:
   let slideshow = ImageSlideshow(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 200))
   view.addSubview(slideshow)
  1. Создайте массив изображений, которые вы хотите отобразить в каруселе:
   let images = [ImageSource(image: UIImage(named: "image1")!),
                 ImageSource(image: UIImage(named: "image2")!),
                 ImageSource(image: UIImage(named: "image3")!)]
  1. Установите массив изображений в объекте ImageSlideshow:
   slideshow.setImageInputs(images)
  1. Настройте свойства объекта ImageSlideshow для желаемого вида:
   slideshow.contentScaleMode = .scaleAspectFill
   slideshow.circular = true
   slideshow.slideshowInterval = 3.0

Здесь contentScaleMode устанавливает режим масштабирования изображений (в данном случае, чтобы изображения заполняли снизу самое по возможности широкое место), circular позволяет карусели вращаться по кругу, и slideshowInterval задает интервал между автоматическим переключением изображений.

  1. Теперь вам нужно настроить collectionView, чтобы отображать только одну ячейку одновременно. Устанавливаем свойство isPagingEnabled в true и прописываем логику размеров ячеек в методе collectionView(_:layout:sizeForItemAt:):
   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
       return CGSize(width: collectionView.frame.width/3, height: collectionView.frame.height)
   }

Здесь мы устанавливаем ширину ячейки равной ширине collectionView, поделенной на 3, чтобы отображать только одну ячейку одновременно.

  1. Запустите приложение и убедитесь, что карусель отображается с одной ячейкой одновременно и изображение масштабируется в соответствии с указанными параметрами.

Это основная логика для создания карусели на UIKit с отображением одной ячейки одновременно и изображением, которое не занимает всю ширину collectionView. Вы можете дополнительно настроить цвета, шрифты и другие свойства карусели в соответствии с вашими потребностями.