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

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

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

   pod 'ImageSlideshow'

Затем выполните команду pod install в терминале, чтобы загрузить библиотеку.
3. Откройте файл ViewController.swift и импортируйте библиотеку:

   import ImageSlideshow

4. Создайте объект ImageSlideshow и добавьте его на ваш UIViewController:

   let slideshow = ImageSlideshow(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 200))
   view.addSubview(slideshow)

5. Создайте массив изображений, которые вы хотите отобразить в каруселе:

   let images = [ImageSource(image: UIImage(named: "image1")!),
                 ImageSource(image: UIImage(named: "image2")!),
                 ImageSource(image: UIImage(named: "image3")!)]

6. Установите массив изображений в объекте ImageSlideshow:

   slideshow.setImageInputs(images)

7. Настройте свойства объекта ImageSlideshow для желаемого вида:

   slideshow.contentScaleMode = .scaleAspectFill
   slideshow.circular = true
   slideshow.slideshowInterval = 3.0

Здесь contentScaleMode устанавливает режим масштабирования изображений (в данном случае, чтобы изображения заполняли снизу самое по возможности широкое место), circular позволяет карусели вращаться по кругу, и slideshowInterval задает интервал между автоматическим переключением изображений.
8. Теперь вам нужно настроить 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, чтобы отображать только одну ячейку одновременно.
9. Запустите приложение и убедитесь, что карусель отображается с одной ячейкой одновременно и изображение масштабируется в соответствии с указанными параметрами.

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