一个使用 SwiftUI 构建的图片查看器。具有拖动关闭、捏合缩放、远程和本地图片等功能。
File(文件) > Swift Packages > Add Package Dependency(添加包依赖)
https://github.com/Jake-Short/swiftui-image-viewer.git
关于 NavigationView 的注意事项:
.overlay
修饰符仅应用于它所应用的视图。 因此,.overlay
修饰符必须应用于 NavigationView 才能出现在所有元素之上! 如果它应用于子视图,它将出现在标题/导航按钮之下。
image
参数在所有版本中都接受 Binding<Image>
。 从 1.0.20 开始,它也接受 Binding<Image?>
import ImageViewer
struct ContentView: View {
@State var showImageViewer: Bool = true
@State var image = Image("example-image")
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewer(image: self.$image, viewerShown: self.$showImageViewer))
}
}
imageURL
参数接受 Binding<String>
import ImageViewerRemote
struct ContentView: View {
@State var showImageViewer: Bool = true
@State var imgURL: String = "https://..."
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewerRemote(imageURL: self.$imgURL, viewerShown: self.$showImageViewer))
}
}
如果需要,可以将关闭按钮移动到右上角。 closeButtonTopRight
参数接受 bool
。
示例
import ImageViewer
struct ContentView: View {
@State var showImageViewer: Bool = true
@State var image = Image("example-image")
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewer(image: self.$image, viewerShown: self.$showImageViewer, closeButtonTopRight: true))
}
}
可以向图片查看器添加标题。 标题将出现在图片查看器的底部附近(如果图片填充整个屏幕,则文本将出现在图片顶部)。 caption
参数接受 Text
。
示例
import ImageViewer
struct ContentView: View {
@State var showImageViewer: Bool = true
@State var image = Image("example-image")
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewer(image: self.$image, viewerShown: self.$showImageViewer, caption: Text("This is a caption!")))
}
}
可以指定显式图片宽高比,这修复了某些情况下出现的不正确拉伸的问题。 aspectRatio
参数接受 Binding<CGFloat>
示例
import ImageViewer
struct ContentView: View {
@State var showImageViewer: Bool = true
@State var image = Image("example-image")
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewer(image: self.$image, viewerShown: self.$showImageViewer, aspectRatio: .constant(2)))
}
}
要禁用远程图片查看器上的缓存,只需将 Bool
值传递给 disableCache
参数
示例
import ImageViewerRemote
struct ContentView: View {
@State var showImageViewer: Bool = true
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewerRemote(imageURL: URL(string: "https://..."), viewerShown: self.$showImageViewer, disableCache: true))
}
}
远程图片查看器允许在 URL 请求中包含 HTTP 标头。 要使用它们,请将字典传递给 httpHeaders 字段。 格式应为 [Header: Value],均为字符串。
示例
import ImageViewerRemote
struct ContentView: View {
@State var showImageViewer: Bool = true
var body: some View {
VStack {
Text("Example!")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(ImageViewerRemote(imageURL: URL(string: "https://..."), viewerShown: self.$showImageViewer, httpHeaders: ["X-Powered-By": "Swift!"]))
}
}
此软件包与 iOS 13 及更高版本兼容。
在 1.0.18 之前,此软件包使用 Swift 工具版本 5.2。 如果您在尝试使用该软件包时收到错误,则您可能正在使用旧版本的 Xcode,应使用此软件包的 1.0.18 或更高版本。
从 1.0.18 及更高版本开始,此软件包使用 Swift 工具版本 5.1,从而允许与更多 Xcode 版本兼容。
本项目采用 MIT 许可证。
请考虑给它加个星标!