SwiftUI 如何将视图的前导对齐到最超级视图的前导?

Posted

技术标签:

【中文标题】SwiftUI 如何将视图的前导对齐到最超级视图的前导?【英文标题】:SwiftUI how to align the view‘s leading to the most super view’s leading? 【发布时间】:2021-11-01 23:06:14 【问题描述】:

我是 SwiftUI 的新手,我正在制作一个小部件。默认代码包括一个文本视图,它在超级视图中以 x 为中心和以 y 为中心(我不知道 SwiftUI 中是否有相同的概念)。 这是我的代码:

struct WidgetEntryView : View 
    var entry: Provider.Entry

    var body: some View 
        VStack(alignment: .leading)
            Text(Date(), style: .time)
                .padding(.leading)
        
    

我想将视图的前导与超级视图的前导对齐,而不是将文本定位在中心。所以我试图在文本的前导添加一个填充,奇怪的是,似乎文本视图不是超级视图的直接子视图,而是定位在一个不可见的中心视图中,因为我最终得到了一个稍微有点偏离中心,如下所示:

这就是我想要的:

我尝试了位置方法,它是唯一有效的方法,但并不完美,因为它基于中心点。

我正在寻找更好的解决方案。

【问题讨论】:

你能发布你目前拥有的代码吗? 欢迎来到 SO - 请使用 tour 并阅读 How to Ask 以改进、编辑和格式化您的问题。如果没有Minimal Reproducible Example,就无法帮助您解决问题。 【参考方案1】:

这是一个 Playground,它提供了一个看起来像您的图片的视图示例:

import UIKit
import SwiftUI
import PlaygroundSupport

struct ViewWithText : View 
    var body : some View 
        HStack 
            Text("Here")
            .background(Color.yellow)
        
        .frame(width: 320, height: 480, alignment: .leading)
        .background(Color.gray)
    


let hostingController = UIHostingController(rootView: ViewWithText())
PlaygroundSupport.PlaygroundPage.current.liveView = hostingController

【讨论】:

以上是关于SwiftUI 如何将视图的前导对齐到最超级视图的前导?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局将图像彼此水平对齐

SwiftUI - 如何将文本视图与另一个文本视图垂直对齐,以制作类似于正确对齐的表格?

如何将底部边缘与上方视图的中心对齐 swiftui

SwiftUI如何对齐大于屏幕宽度的视图

SwiftUI:将视图与 VStack 中另一个视图的前缘和后缘对齐

故事板自动布局将视图放置在表格单元格中,并将尾随到超级视图约束固定到最左侧