在 SwiftUI 中,如何使用动态变化的滚动区域来缩放 scrollView 中的内容?
In SwiftUI, how to scale content inside scrollView with dynamic changing scrolling area?
我正在使用 SwiftUI 开发 MacOS 应用程序。
假设我们有一个固定大小 window,它将显示一个可滚动的图像。
现在我想创建一个功能,可以让用户缩放图像,并可以在 window.
中滚动和查看缩放后的图像
问题是,当我放大图片后,滚动区域似乎没有一起展开,滚动区域不够大,无法到达图片的每个角落。
struct ContentView: View {
var body: some View {
ScrollView([.horizontal, .vertical] , showsIndicators: true ){
Image("test")
.scaleEffect(2)
}
.frame(width: 500, height: 500)
}
}
我尝试使用 GeometryReader 设置图像的框架,但得到了相同的结果。
MacOS 11.1,Xcode12.3
谢谢!
.scaleEffect
似乎在不影响其框架的情况下对视图执行视觉转换,因此 ScrollView
不知道要容纳更大的尺寸。
图片上的 .resizable()
和 .frame
似乎可以解决问题:
struct ContentView: View {
@State private var scale : CGFloat = 1.0
var body: some View {
VStack {
ScrollView([.horizontal, .vertical] , showsIndicators: true ){
Image(systemName: "plus.circle")
.resizable()
.frame(width: 300 * scale,height: 300 * scale)
}
.frame(width: 500, height: 500)
Slider(value: $scale, in: (0...5))
}
}
}
我正在使用 SwiftUI 开发 MacOS 应用程序。
假设我们有一个固定大小 window,它将显示一个可滚动的图像。 现在我想创建一个功能,可以让用户缩放图像,并可以在 window.
中滚动和查看缩放后的图像问题是,当我放大图片后,滚动区域似乎没有一起展开,滚动区域不够大,无法到达图片的每个角落。
struct ContentView: View {
var body: some View {
ScrollView([.horizontal, .vertical] , showsIndicators: true ){
Image("test")
.scaleEffect(2)
}
.frame(width: 500, height: 500)
}
}
我尝试使用 GeometryReader 设置图像的框架,但得到了相同的结果。
MacOS 11.1,Xcode12.3
谢谢!
.scaleEffect
似乎在不影响其框架的情况下对视图执行视觉转换,因此 ScrollView
不知道要容纳更大的尺寸。
.resizable()
和 .frame
似乎可以解决问题:
struct ContentView: View {
@State private var scale : CGFloat = 1.0
var body: some View {
VStack {
ScrollView([.horizontal, .vertical] , showsIndicators: true ){
Image(systemName: "plus.circle")
.resizable()
.frame(width: 300 * scale,height: 300 * scale)
}
.frame(width: 500, height: 500)
Slider(value: $scale, in: (0...5))
}
}
}