我喜欢用 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 中解决这个问题吗?