SwiftUI缩放图像的实际图像大小

时间:2020-04-22 02:47:11

标签: swift swiftui

我是SwiftUI的新手,正在尝试用它来测试一个想法。我确定我想做的很简单,但是我很想念它。我想获得实际图像的大小,随着比例的变化。我阅读的所有内容都告诉我要使用GeometryReader。但是,这些接缝为我提供了显示视图的大小。随着比例的变化,它不会发生变化。 下面是我的代码,但是没有产生我所需要的。我的最终目标是让我知道图像的大小,并且可以限制用户,以使他们不能独立于比例尺将图像滑出视图。

使用以下代码行,我希望能够将图像定位在从左侧(0.0偏移)到右侧(1.0 x?)的任何位置,而与图像的比例无关。

.position(x: self.sharedImageOffset * geometry.size.width, y: 200 )

感谢您的帮助。

import SwiftUI

struct ContentView: View {
    @State var sharedImageScale: CGFloat = 1.0
    @State var sharedImageOffset: CGFloat = 0.0

    var body: some View {
        VStack{
            GeometryReader { geometry in
                Image("IMG_1650")
                    .resizable()
                    .aspectRatio(contentMode: .fill)
                    .scaleEffect(self.sharedImageScale)
                    .position(x: self.sharedImageOffset * geometry.size.width, y: 0 )
                    .background(Color.blue)
                    .gesture(
                        TapGesture()
                            .onEnded { _ in
                                print("SIZE \(geometry.size)")
                        }
                )
            }.border(Color.green, width: 2)
                .clipped()

            HStack{
                Text("Scale")
                Slider(value: self.$sharedImageScale, in: 0.5...10 ).frame(minWidth: 10, idealWidth: 100, maxWidth: 200)
                Text("Offset")
                Slider(value: self.$sharedImageOffset, in: -1.0...1 ).frame(minWidth: 10, idealWidth: 100, maxWidth: 200)
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

0 个答案:

没有答案