微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将屏幕外的 SwiftUI 视图居中 使用偏移量(x:y:)

如何解决将屏幕外的 SwiftUI 视图居中 使用偏移量(x:y:)

我正在尝试创建一个水平居中圆的屏幕,该圆大于实际屏幕的宽度。不幸的是,我不知道如何水平居中将其固定到顶部。有没有一种简单的方法可以使用 SwiftUI 实现这样的结果?

struct DemoView: View {
    private let circleBackgroundPercentage: CGFloat = 1.3
    
    var body: some View {
        ZStack {
            GeometryReader { geometry in
                vstack(alignment: .center) {
                    Circle()
                        .fill(Color.yellow)
                        .frame(width: geometry.size.width * circleBackgroundPercentage,height: geometry.size.height * circleBackgroundPercentage,alignment: .center)
                }
            }
            Text("Demo")
        }.edgesIgnoringSafeArea(.all)
    }
}

The expected result

]

The current result

解决方法

这是解决此类任务的可能方法。

已准备好 Xcode 12.4/iOS 14.4

demo

var body: some View {
    ZStack {
        VStack {
            Color.yellow
                .clipShape(Circle())
            Color.clear
        }
        .scaleEffect(1.8)   // << tune factor as needed !!
        Text("Demo")
    }.edgesIgnoringSafeArea(.all)
}
,

使用偏移量(x:y:)

按指定的水平和垂直距离偏移此视图。 - https://developer.apple.com

水平居中对齐。

.offset(x: -(((geometry.size.width * circleBackgroundPercentage) - geometry.size.width)) / 2)

您可以对 y 位置使用类似的技术将圆圈固定在顶部。


您也可以使用 position(x:y:)。欲了解更多信息,请阅读这篇文章 https://www.hackingwithswift.com/books/ios-swiftui/absolute-positioning-for-swiftui-views

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。