はじめに
iOS16から追加されたコンポーネントで使ったことがなかったので調べてみました。
基本的な使い方
payloadType
にはこちらにある型が指定できると思います。
戻り値は指定した型の配列です。
複数の型を取得する方法もありますが、使い方があまり変わらないので今回は省略します。
import SwiftUI
struct ContentView: View {
@State var text: String = ""
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text("テキストフィールド")
}
.textFieldStyle(.roundedBorder)
PasteButton(payloadType: String.self) { texts in
guard let text = texts.first else { return }
self.text = text
}
}
.padding()
}
}
カスタマイズ
色を変更する
import SwiftUI
struct ContentView: View {
@State var text: String = ""
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text("テキストフィールド")
}
.textFieldStyle(.roundedBorder)
PasteButton(payloadType: String.self) { texts in
guard let text = texts.first else { return }
self.text = text
}
+ .tint(.red)
}
.padding()
}
}
ラベルのスタイル
import SwiftUI
struct ContentView: View {
@State var text: String = ""
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text("テキストフィールド")
}
.textFieldStyle(.roundedBorder)
PasteButton(payloadType: String.self) { texts in
guard let text = texts.first else { return }
self.text = text
}
+ .labelStyle(.automatic)
}
.padding()
}
}
titleOnly
iconOnly
titleAndIcon
ボタンの背景
import SwiftUI
struct ContentView: View {
@State var text: String = ""
var body: some View {
VStack(spacing: 50) {
TextField(text: $text, axis: .vertical) {
Text("テキストフィールド")
}
.textFieldStyle(.roundedBorder)
PasteButton(payloadType: String.self) { texts in
guard let text = texts.first else { return }
self.text = text
}
+ .buttonBorderShape(.automatic)
}
.padding()
}
}
capsule
roundedRectangle
roundedRectangle(radius:)
おわり
ちょっとカスタマイズ性が低いかなと思いました。
buttonStyleが使えてもいいのに。。。