SwiftUI фактический размер изображения масштабированного изображения - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в 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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...