【Swift UI】ボタンのUIがアクセシビリティの設定で崩れた場合の対処法

【Swift UI】ボタンのUIがアクセシビリティの設定で崩れた場合の対処法

この記事からわかること

  • Swift UIボタンUIアクセシビリティ設定崩れた場合の対処法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

ボタンのUIがアクセシビリティの設定で崩れてしまう

Swift UIでButtonを実装している際にiPhoneの設定から「ボタンの形」というアクセシビリティの設定をONにされている場合UIが崩れてしまう現象が発生しました。

「アクセシビリティ」>「画面表示とテキストサイズ」>「ボタンの形」

【Swift UI】ボタンのUIがアクセシビリティの設定で崩れた場合の対処法

ボタンの形」という設定はボタンUIのタップ領域を可視化するためのアクセシビリティ設定のようで、UIがボタンの実際のタップ領域を含めたサイズでUI表示するように変更になります。これによりSwift UI限定でボタンUIのサイズが勝手に変更されてしまうようです。

【Swift UI】ボタンのUIがアクセシビリティの設定で崩れた場合の対処法

上記の2番目のように200pxを超えた領域がグレーになったり、3番目のように200px以上の領域がボタンになったりする。

Button {
    
} label: {
    Text("Button1")
}.frame(width: 200)
    .background(Color.cyan)

Button {
    
} label: {
    Text("Button2")
        .frame(width: 200)
}.frame(width: 200)
    .background(Color.cyan)


Button {
    
} label: {
    Text("Button3")
        .frame(width: 200)
}.background(Color.cyan)

解決法

frame指定したサイズのままになるように実装するためには.buttonStyle(.plain)を指定してあげれば解消します。デフォルトでは.automaticが指定されておりその場合にアクセシビリティの設定によってUIが変更されてしまうようです。

Button {
    print("2")
} label: {
    Text("Button2")
        .frame(width: 200)
}.frame(width: 200)
    .background(Color.cyan)
    .buttonStyle(.plain)
【Swift UI】ボタンのUIがアクセシビリティの設定で崩れた場合の対処法

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index