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 - 如何将文本视图与另一个文本视图垂直对齐,以制作类似于正确对齐的表格?