web-dev-qa-db-ja.com

Swiftuiでは図形にテキストを持つ方法は?

Swiftuiの形(例:Square)にテキスト(例えばHI)を追加し、それらを単一のオブジェクトとして機能させたいです。

Swiftuiでテキストを形作る直接的な方法がないようです。

8
AtharvSalokhe

ここに、IMO、ほとんどの簡単なアプローチです。

汎用スキーマ

Text(_any_of_text_)
    .background(_any_of_Shape)
 _

例えば:

Text("Hello, World!")
    .background(Rectangle().stroke())

Text("Hello, World!")
    .background(RoundedRectangle(cornerRadius: 4).stroke())
 _
1
Asperi

これが私がより包括的な答えであると考えるものです。これはXcode 11.5の時点で動作します。

Text(question)
    .fixedSize(horizontal: false, vertical: true)
    .multilineTextAlignment(.center)
    .padding()
    .frame(width: 300, height: 200)
    .background(Rectangle().fill(Color.white).shadow(radius: 3))
 _

ノート:

  • fixedSize()はテキストを折り返します(.linelimit(nil)が機能しなくなったため)。省略記号を使用して1行のテキストを単に必要な場合は省略できます。
  • multilineTextAlignment()テキストを中心にしたり、テキストを揃えることができます。
  • padding()はテキストに長方形()内で呼吸するためのより多くのスペースを与えます
  • frame()Text()の背景であるため、text()、したがってRectangle()の幅と高さを設定します。
  • background()text()の背景の形状を設定します。私はここで塗りつぶし色とドロップシャドーを追加しました

この例の最後の結果は、テキストがCUEカードのようなキューカード内に表示されるように見えるようになります。

1
Gene Loparco

新しいSwiftuiビューを作成し、あなたの目標を作成するためにZ-Stackを利用してください。

struct YourCustomObject: View {

    var body: some View {
        ZStack {
            Rectangle()
                .fill(Color.secondary)
                .frame(width: 200, height: 200)

            Text("Your desired text")
                .foregroundColor(.white)
        }
    }
}
 _
0
Text("Hi")
 .frame(width: 40, height: 40, alignment: .center)
 .background(Color.black)
 .clipShape(Rectangle())
 _
0
Christina