AdaptiveDimensions — 動的テキストサイズ対応レイアウト
概要
AdaptiveDimensionsは、SwiftUIビューの幅・高さ・マージンなどの「寸法」をシステムのテキストサイズ設定に合わせて柔軟に調整するための小さなユーティリティライブラリです。Dynamic Typeやユーザーのアクセシビリティ設定に対応したUIを作る際、固定値のままではテキストの拡大によりレイアウトが崩れやすくなります。本ライブラリはその課題に対処するためのモディファイア群を提供し、既存のレイアウトコードに対して最小限の変更で寸法のスケーリングを適用できるよう設計されています。Swift Package Managerで配布され、iOS 14以降とmacOS 11以降を対象としている点も特徴です。
リポジトリの統計情報
- スター数: 4
- フォーク数: 0
- ウォッチャー数: 4
- コミット数: 7
- ファイル数: 6
- メインの言語: Swift
主な特徴
- Dynamic Type(システムのテキストサイズ)に応じたレイアウト寸法の自動補正を提供
- SwiftUIモディファイアとしてシンプルに組み込み可能
- Swift Package Manager対応で導入が容易
- iOS 14+ / macOS 11+ をサポートし、クロスプラットフォームで利用可能
技術的なポイント
AdaptiveDimensionsはSwiftUIの宣言的な仕組みを活かし、ビューに対して「寸法を動的に補正する」モディファイアを付与するアプローチを採っています。技術的には、Environmentの値(特にsizeCategoryやaccessibilityDifferentiateWithoutColorなどのアクセシビリティ関連)を参照して現在のテキストサイズ分類を取得し、それに基づいて元の固定寸法に対するスケール係数を計算する、という設計が想定されます。スケーリングのアルゴリズムは単純な線形スケールや閾値ベースのマッピング(例:.large → 1.0、.extraLarge → 1.1、.accessibilityExtraExtraLarge → 1.4 等)を用いることが多く、ユーザーが読みやすいレイアウトを維持しつつ、UIコンポーネントの視覚的整合性を保ちます。
APIはSwiftUI標準のモディファイア風に設計されており、既存のViewチェーンに違和感なく組み込める点が利点です。たとえば幅や高さ、コーナー半径、余白など各種寸法に対して個別に適用でき、必要に応じてプラットフォームごとの挙動を分岐させることも可能です。パッケージ化(Package.swift)されているため、プロジェクトへの追加やバージョン管理が容易で、XcodeのSwiftPM統合を通じて依存関係として組み込めます。
また小規模なライブラリ構成であるため導入のコストが低く、アクセシビリティに配慮したUIを素早く実装できます。Resourcesフォルダにアイコン等が含まれているため、サンプルやドキュメントの視認性も確保されています。ライセンスファイルも同梱されているため利用条件の確認も行いやすく、OSSとしてプロダクションに導入する際の手続きも明確です。
(実装の詳細やメソッド名、提供されるモディファイアの一覧についてはREADMEやソースを参照してください。テストやサンプルの数は限定的なので、プロジェクトでの採用前に実環境での確認を推奨します。)
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- LICENSE: file
- Package.swift: file
- README.md: file
- Resources: dir
…他 1 ファイル
まとめ
Dynamic Typeに配慮した軽量なSwiftUIライブラリ。導入が簡単でアクセシビリティ改善に有用。
リポジトリ情報:
- 名前: AdaptiveDimensions
- 説明: SwiftUI modifiers that adapt layout dimensions to system text size settings
- スター数: 4
- 言語: Swift
- URL: https://github.com/Aeastr/AdaptiveDimensions
- オーナー: Aeastr
- アバター: https://avatars.githubusercontent.com/u/64797587?v=4
READMEの抜粋:
AdaptiveDimensions
SwiftUI modifiers that adapt layout dimensions to system text size settings.