Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: CI

on:
push:
branches: [master]
pull_request:

jobs:
spm:
name: SPM build (iOS)
runs-on: macos-15
steps:
- uses: actions/checkout@v4
# _Pods.xcodeproj would shadow the Swift package for xcodebuild
- name: Remove CocoaPods development project placeholder
run: rm -rf _Pods.xcodeproj
- name: Build all package products
run: |
xcodebuild -scheme ImageSlideshow-Package \
-destination 'generic/platform=iOS Simulator' \
build
example-tests:
name: Example app tests
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Install XcodeGen
run: brew install xcodegen
- name: Generate Xcode project
working-directory: Example
run: xcodegen generate
- name: Install pods
working-directory: Example
run: pod install
- name: Run tests
working-directory: Example
run: |
DEVICE=$(xcrun simctl list devices available | grep -m1 -oE 'iPhone [^(]+' | sed 's/ *$//')
echo "Using simulator: $DEVICE"
xcodebuild test \
-workspace ImageSlideshow.xcworkspace \
-scheme ImageSlideshow-Example \
-destination "platform=iOS Simulator,name=$DEVICE" \
CODE_SIGNING_ALLOWED=NO
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,6 @@ Pods/

# Swift Package Manager
.build/

# XcodeGen — generated project (regenerated by CI and locally via `xcodegen generate`)
Example/ImageSlideshow.xcodeproj/
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Change log

## [1.9.4](https://github.com/zvonicek/ImageSlideshow/releases/tag/1.9.4) (12/06/2026)

## Breaking

- Minimum deployment target raised to iOS 15 (CocoaPods and Swift Package Manager)
- Removed the unmaintained `Parse` subspec
- Removed the Swift 4.2 compatibility typealiases (`UIViewContentMode` etc.)

## New Features

- Input sources, activity indicators and page indicators adopt main-actor isolation for Swift concurrency

## Fixes

- Fixed Swift Package Manager dependency resolution (AlamofireImage requirement pointed at a nonexistent version)
- Kingfisher loads run synchronously on the main actor, fixing a race where a deferred cancel could abort a newly started download
- Failed image loads now report nil so the retry gesture is enabled (KingfisherSource, AFURLSource)
- Interactive dismiss gesture is removed from the window it was added to, fixing a leak when the key window changes

## [1.6.1](https://github.com/zvonicek/ImageSlideshow/releases/tag/1.6.1) (11/06/2018)

## Fixes
Expand Down
769 changes: 0 additions & 769 deletions Example/ImageSlideshow.xcodeproj/project.pbxproj

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

7 changes: 3 additions & 4 deletions Example/ImageSlideshow/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class ViewController: UIViewController {
@IBOutlet var slideshow: ImageSlideshow!

let localSource = [BundleImageSource(imageString: "img1"), BundleImageSource(imageString: "img2"), BundleImageSource(imageString: "img3"), BundleImageSource(imageString: "img4")]
let afNetworkingSource = [AFURLSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")!, AFURLSource(urlString: "https://images.unsplash.com/photo-1447746249824-4be4e1b76d66?w=1080")!, AFURLSource(urlString: "https://images.unsplash.com/photo-1463595373836-6e0b0a8ee322?w=1080")!]
let alamofireSource = [AlamofireSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")!, AlamofireSource(urlString: "https://images.unsplash.com/photo-1447746249824-4be4e1b76d66?w=1080")!, AlamofireSource(urlString: "https://images.unsplash.com/photo-1463595373836-6e0b0a8ee322?w=1080")!]
let sdWebImageSource = [SDWebImageSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")!, SDWebImageSource(urlString: "https://images.unsplash.com/photo-1447746249824-4be4e1b76d66?w=1080")!, SDWebImageSource(urlString: "https://images.unsplash.com/photo-1463595373836-6e0b0a8ee322?w=1080")!]
let kingfisherSource = [KingfisherSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")!, KingfisherSource(urlString: "https://images.unsplash.com/photo-1447746249824-4be4e1b76d66?w=1080")!, KingfisherSource(urlString: "https://images.unsplash.com/photo-1463595373836-6e0b0a8ee322?w=1080")!]
Expand All @@ -28,15 +27,15 @@ class ViewController: UIViewController {

slideshow.slideshowInterval = 5.0
slideshow.pageIndicatorPosition = .init(horizontal: .center, vertical: .under)
slideshow.contentScaleMode = UIViewContentMode.scaleAspectFill
slideshow.contentScaleMode = .scaleAspectFill

slideshow.pageIndicator = UIPageControl.withSlideshowColors()

// optional way to show activity indicator during image load (skipping the line will show no activity indicator)
slideshow.activityIndicator = DefaultActivityIndicator()
slideshow.delegate = self

// can be used with other sample sources as `afNetworkingSource`, `alamofireSource` or `sdWebImageSource` or `kingfisherSource`
// can be used with other sample sources as `alamofireSource`, `sdWebImageSource` or `kingfisherSource`
slideshow.setImageInputs(localSource)

let recognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.didTap))
Expand All @@ -46,7 +45,7 @@ class ViewController: UIViewController {
@objc func didTap() {
let fullScreenController = slideshow.presentFullScreenController(from: self)
// set the activity indicator for full screen controller (skipping the line will show no activity indicator)
fullScreenController.slideshow.activityIndicator = DefaultActivityIndicator(style: .white, color: nil)
fullScreenController.slideshow.activityIndicator = DefaultActivityIndicator(style: .medium, color: nil)
}
}

Expand Down
7 changes: 5 additions & 2 deletions Example/Podfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
platform :ios, '10.0'
platform :ios, '15.0'
use_frameworks!

target 'ImageSlideshow_Example' do
pod "ImageSlideshow", :path => "../"
pod "ImageSlideshow/AFURL", :path => "../"
pod "ImageSlideshow/Alamofire", :path => "../"
pod "ImageSlideshow/SDWebImage", :path => "../"
pod "ImageSlideshow/Kingfisher", :path => "../"

target 'ImageSlideshow_Tests' do
inherit! :search_paths
end
end
Loading