diff --git a/Package.resolved b/Package.resolved index 8592a2a..8054084 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/3sidedcube/cubefoundation-ios.git", "state" : { - "branch" : "develop", - "revision" : "cd545cc9aefd43925f4ebc9ff9060e436e4cb01c" + "branch" : "release/v1.1.0", + "revision" : "98a3da102c6da6c24b62a4524c20652d849d7aab" } } ], diff --git a/Package.swift b/Package.swift index 0601cd8..4c7b4b9 100644 --- a/Package.swift +++ b/Package.swift @@ -7,7 +7,7 @@ let package = Package( name: "ArcUI", platforms: [ // .macOS(.v12), Uses UIKit - .iOS(.v15) + .iOS(.v16) ], products: [ .library( @@ -18,7 +18,7 @@ let package = Package( dependencies: [ .package( url: "https://github.com/3sidedcube/cubefoundation-ios.git", - branch: "develop" + branch: "release/v1.1.0" ) ], targets: [ diff --git a/Sources/Components/ARCImageCard.swift b/Sources/Components/ARCImageCard.swift index 156dace..8340103 100644 --- a/Sources/Components/ARCImageCard.swift +++ b/Sources/Components/ARCImageCard.swift @@ -14,6 +14,7 @@ public struct ARCImageCard: View { public var subtitle: String public var footerTitle: String public var image: Image + public var imageSizeRatio: CGFloat? public var titleAlignment: TextAlignment public var onTap: () -> Void @@ -22,6 +23,7 @@ public struct ARCImageCard: View { subtitle: String, footerTitle: String, image: Image, + imageSizeRatio: CGFloat? = nil, titleAlignment: TextAlignment = .center, onTap: @escaping () -> Void ) { @@ -29,6 +31,7 @@ public struct ARCImageCard: View { self.subtitle = subtitle self.footerTitle = footerTitle self.image = image + self.imageSizeRatio = imageSizeRatio self.titleAlignment = titleAlignment self.onTap = onTap } @@ -37,13 +40,29 @@ public struct ARCImageCard: View { Button(action: onTap) { VStack(alignment: .leading, spacing: 0) { // Image - image - .resizable() - .scaledToFill() - .frame(height: .ArcImageCard.imageHeight) - .frame(maxWidth: .infinity) - .clipped() - .accessibilityHidden(true) + if let imageSizeRatio { + // Aspect ratio + Color.clear + .aspectRatio(imageSizeRatio, contentMode: .fill) + .frame(maxWidth: .infinity) + .overlay { + image + .resizable() + .scaledToFill() + .accessibilityHidden(true) + } + .clipped() + } else { + // Fixed height + image + .resizable() + .scaledToFill() + .frame(height: .ArcImageCard.imageHeight) + .frame(maxWidth: .infinity) + .clipped() + .accessibilityHidden(true) + } + // Body VStack(alignment: .leading, spacing: 8) { Text(title)