SwiftUI缩放文本以适合宽度和高度

时间:2020-07-14 07:08:33

标签: ios swift text swiftui

我有几个矩形,每个矩形上方都有文字。

rectangles with text

现在,这些矩形是动态的:取决于Geometry Reader,它们可以很大,也可以很小。

我的问题是我无法根据矩形的大小来放大或缩小文本。

这是我的示例代码:

我声明了一个数字数组:

var array: [[Int]] = [
    [4,5,6],
    [3,4,9,6],
    [4,7],
    [1,2,3],
    [1,5,5],
    [1,2,4,5,6]]

这是正文:

    GeometryReader { geo in
        HStack(spacing: 0) {

            ForEach(0..<6, id: \.self) { i in

                ZStack(alignment: .bottom) {

                    LinearGradient(gradient: Gradient(colors: [Color.gray, Color.white]), startPoint: .bottom, endPoint: .top)
                        .frame(width: (geo.size.width - 90) / CGFloat(10), height: 90)
                        .overlay(Rectangle().stroke(Color.white))
                        .cornerRadius(8)

                    VStack(spacing: 0) {
                        ForEach(0..<self.array[i].count) { j in
                            Text("\(self.array[i][j])").font(.footnote)  
                        }
                    }
                }
            }
        }
    }

这是我尝试过的:

我将尺寸设置为极大,将比例因子设置为非常小:

Text("\(self.array[i][j])").font(.system(size: 1000)).minimumScaleFactor(0.0005)

我也尝试过使用固定尺寸:

.fixedSize(horizontal: false, vertical: false)

还有这一行:

.allowsTightening(true)

1 个答案:

答案 0 :(得分:0)

minimumScaleFactor和minimumFontSize无效,除非您设置adjustsFontSizeToFitWidth。 除了创建vstack之外,您可能希望将所有图形(由换行符分隔)放置在单个文本中,并使文本适合边界矩形。