在 SwiftUI 中对齐包含的视图

Aligning Contained Views in SwiftUI

好的。我正在努力将 this project 复制为纯 SwiftUI 视图。

我有工作要做。我知道这个系统仍然有很多问题。第一次更新帮了大忙,但还是有问题。

尽管如此,我还是希望大部分问题都是我自己造成的。那些,我可以解决。

我以与原始控件相同的方式布置控件,分为三层:背景圆圈、中间可移动元素(微调器)和顶部透明蒙版。

圆已经完成,我正在绘制微调层。

我希望它看起来像这样:

我现在看起来像这样:

问题是我很难获取图像尺寸以通知偏移量,但我真正想要的是简单地使图像锚点位于顶部,因此偏移量已排序。

我试着弄乱了 alignmentGuideframe 的东西,但我一定没有很好地理解它,因为它们似乎被忽略了。

这是一个图像半径的 the code snippet,这是应该发生的位置:

struct RVS_SwiftUISpinner_ItemDisplayView: View {
    @State var itemImage: Image
    @State var size: CGSize

    var body: some View {
        return VStack(alignment: .center, spacing: 0) {
            self.itemImage
                .resizable()
                .aspectRatio(contentMode: .fit)
                .offset(y: -self.size.height)
                .frame(alignment: .top)
        }
        .frame(width: self.size.width,
               height: self.size.height,
               alignment: .bottom)
            .background(Color(red: 0, green: 1.0, blue: 1.0, opacity: 0.25))
        .offset(y: -self.size.height / 2.0)
    }
}

有人看到我做错了什么吗?我会坚持下去,我最终会找到并解决问题,但我基本上还是在不断完善它。

好的。我想我有:

struct RVS_SwiftUISpinner_ItemDisplayView: View {
    @State var itemImage: Image
    @State var size: CGSize

    var body: some View {
        return VStack(alignment: .center, spacing: 0) {
            self.itemImage
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(alignment: .top)
        }
        .frame(width: self.size.width,
               height: self.size.height,
               alignment: .top)
        .background(Color(red: 0, green: 1.0, blue: 1.0, opacity: 0.25))
        .offset(y: -self.size.height / 2.0)
    }
}

我将 OUTER 对齐设置为 .top。

向前和向上...