首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止文本扩展VStack的宽度

如何防止文本扩展VStack的宽度
EN

Stack Overflow用户
提问于 2021-04-19 06:59:44
回答 1查看 82关注 0票数 0

我有一个包含ImageTextVStack。我将Image的宽度(和高度)设置为屏幕宽度的一半:

代码语言:javascript
复制
struct PopularNow: View {
    let item = popular[0]
    
    var body: some View {
        VStack(spacing: 5) {
            Image(item.image)
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: getRect().width/2, height: getRect().width/2)
            Text(item.description)
                .font(.caption)
                .fontWeight(.bold)
                .lineLimit(0)
        }
        .padding()
        .background(Color.gray.opacity(0.1))
        .cornerRadius(15)
    }
    
    func getRect() -> CGRect {
        return UIScreen.main.bounds
    }
}

问题是Text会推动并导致VStack扩展,而不是尊重Image的宽度。我如何才能告诉Text不要水平增长超过Image的宽度,而是“垂直”增长(即添加所需的任意多行)?我知道我可以在VStack本身中添加frame修饰符,但这似乎是一个技巧。我想告诉Text只占用VStack已经拥有的空间宽度,而不是更多。

这就是它现在的样子,正如你可以看到的,VStack没有屏幕的一半大小,它是全屏幕大小,因为Text正在扩展它。

EN

回答 1

Stack Overflow用户

发布于 2021-04-20 01:35:36

试着固定它的大小,比如

代码语言:javascript
复制
    VStack(spacing: 5) {
        Image(item.image)
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(width: getRect().width/2, height: getRect().width/2)
        Text(item.description)
            .font(.caption)
            .fontWeight(.bold)
            .lineLimit(0)
    }
    .fixedSize()         // << here !!
//   .fixedSize(horizontal: true, vertical: false)   // alternate
    .padding()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67154177

复制
相关文章

相似问题

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