首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使VStack中的文本接受VStack的整个宽度

使VStack中的文本接受VStack的整个宽度
EN

Stack Overflow用户
提问于 2020-09-04 03:32:19
回答 2查看 645关注 0票数 0

我正在尝试创建两个位于Text内部的VStack,以获取父级( VStack)的整个宽度。

我完全没有想法了。

这就是我所拥有的:

代码语言:javascript
复制
var body: some View {
        VStack(alignment: .center, spacing: 0) {

            Image("image")
                .resizable()
                .scaledToFill()
                .frame(height: 190)
                .clipped()

            VStack(alignment: .leading, spacing: 8) {
                Text(title)
                    .font(.title)
                    .background(Color.red)
                    .fixedSize(horizontal: false, vertical: true)

                Text(subtitle)
                    .font(.subheadline)
                    .background(Color.yellow)
                    .fixedSize(horizontal: false, vertical: true)
            }
                .frame(minWidth: 0, maxWidth: .infinity)
                .background(Color.green)
                .padding(.top, 24)
                .padding(.horizontal, 24)


            Button(buttonTitle) { print("Something") }
                .frame(maxWidth: .infinity, minHeight: 56)
                .background(Color.red)
                .foregroundColor(.white)
                .cornerRadius(56/2)
                .padding(.top, 32)
                .padding(.horizontal, 24)
                .padding(.bottom, 20.0)

        }.background(Color.blue)
            .cornerRadius(38)
            .frame(minWidth: 0, maxWidth: UIScreen.main.bounds.size.width - 48)
}

这就是它的样子:

我想要红色和黄色标签的绿色VStack的全部宽度。

我怎么能做到这一点?!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 03:47:51

  1. 删除对两个文本的.fixedSize添加.frame(minWidth: 0,maxWidth:.infinity),而在SwiftUI中删除
  2. ,这也关系到事情的顺序,所以您需要在.frame

之后添加.background

最终结果将是:

代码语言:javascript
复制
            Text("title")
                .font(.title)
                .frame(minWidth: 0, maxWidth: .infinity)
                .background(Color.red)

相反,使它保持对齐:

代码语言:javascript
复制
HStack {
     Text("title")
        .font(.title)
                    
        Spacer(minLength: 0)
}
.background(Color.red)
票数 1
EN

Stack Overflow用户

发布于 2020-09-04 04:16:04

以下是可能的解决方案

代码语言:javascript
复制
        VStack(alignment: .leading, spacing: 8) {
            Text(title)
                .font(.title)
                .frame(maxWidth: .infinity)    // << here 
                .background(Color.red)
                .fixedSize(horizontal: false, vertical: true)

            Text(subtitle)
                .font(.subheadline)
                .frame(maxWidth: .infinity)    // << here
                .background(Color.yellow)
                .fixedSize(horizontal: false, vertical: true)
        }
        .frame(maxWidth: .infinity)   // << here 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63734446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档