LoginSignup
2
3

More than 1 year has passed since last update.

【SwiftUI】アクセシビリティ設定によってフォントサイズが変わってしまう

Last updated at Posted at 2022-09-29

はじめに

iPhoneの設定にアクセシビリティはとても優れており、様々な設定が存在します。
今回はそんなアクセシビリティに関する落とし穴について紹介できたらと思います。

問題点

このようなUIのアプリがあったとします。
スクリーンショット 2022-09-29 18.19.06.png

現在は信号の表示であることが容易にわかります。
しかし、アクセシビリティで文字の大きさを大きくしていた場合はどうなるでしょうか。

このような表示になってしまいます。
これでは信号であるという事がユーザーに伝わりません。
スクリーンショット 2022-09-29 18.20.32.png

もし省略されている文字がアプリの使い方であった場合、
ユーザーはアプリの使い方がわからないということが起きてしまうわけです。

対策方法

固定サイズ

dynamicTypeSizeで1つだけ指定すると固定のサイズになります。

import SwiftUI

struct ContentView: View {
    var body: some View {
        HStack(alignment: .center) {
            Text("青信号")
                .frame(width: 120, height: 70)
                .background(Color.cyan)
+               .dynamicTypeSize(.medium)
            Text("黄信号")
                .frame(width: 120, height: 70)
                .background(Color.yellow)
+               .dynamicTypeSize(.medium)
            Text("赤信号")
                .frame(width: 120, height: 70)
                .background(Color.red)
+               .dynamicTypeSize(.medium)
        }
    }
}

この方法は確実ではありますが、ユーザーフレンドリではありません。
mediumでは文字が小さいと感じる方もいるからです。

xSmall AX 5
スクリーンショット 2022-09-29 18.39.39.png スクリーンショット 2022-09-29 18.40.11.png

範囲指定

文字が省略されない程度までは大きくできるように設定します。
今回はxSmallからxxLargeまでの範囲を指定しています。

import SwiftUI

struct ContentView: View {
    var body: some View {
        HStack(alignment: .center) {
            Text("青信号")
                .frame(width: 120, height: 70)
                .background(Color.cyan)
+               .dynamicTypeSize(DynamicTypeSize.xSmall...DynamicTypeSize.xxLarge)
            Text("黄信号")
                .frame(width: 120, height: 70)
                .background(Color.yellow)
+               .dynamicTypeSize(DynamicTypeSize.xSmall...DynamicTypeSize.xxLarge)
            Text("赤信号")
                .frame(width: 120, height: 70)
                .background(Color.red)
+               .dynamicTypeSize(DynamicTypeSize.xSmall...DynamicTypeSize.xxLarge)
        }
    }
}

最大サイズにしても文字が省略されていません!

xSmall AX 5
スクリーンショット 2022-09-29 18.36.29.png スクリーンショット 2022-09-29 18.36.38.png

おわり

意外と見落としがちなところなので気をつけていきたいです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3