2

我喜欢用 SwiftUI 实现的是图像中的某个部分(内容管理系统提供的 ax,y 点)始终可见,即使在需要调整图像大小和裁剪以适应布局的情况下也是如此。

我想要实现的视觉示例

以下示例代码生成的输出可以在示例的第一个屏幕截图中看到:

struct NewsPost{
    var image: UIImage
    var imageSalientPoint: CGPoint
    var headline: String
}

struct ContentView: View {
    var newsPost = NewsPost(image: #imageLiteral(resourceName: "example1"), imageSalientPoint: CGPoint(x: 150, y: 300), headline: "The power of swift UI!")

    var body: some View {

        VStack(){
            Image(uiImage: newsPost.image)
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(height: 175, alignment: .top)
                .clipped()
        }

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ZStack{
            Color.purple.edgesIgnoringSafeArea(.all)
            ContentView()
        }
    }
}

如果图像的框架是恒定的,我可以通过添加offset(x:,y:)修饰符来解决这个问题。但是,帧的大小不同(例如,在我的示例中,宽度取决于设备),因此需要动态计算偏移量。为此,我需要知道图像框架的大小和UIImage.

我尝试了成功,GeometryReaderÀnchorPreferences没有成功。知道如何在 SwiftUI 中解决这个问题吗?

4

0 回答 0