iOSのアプリでカレンダーを実装するとき、FSCalendarを利用しております。
大変便利です。ありがとうございます。
ある日アプリを開いたところ表示が崩れておりました... あれ?
なんやこの崩れ方は...
調査
いろいろ調べましたところ、
端末によって出る、出ないがあることがわかりました。
さらに、このFSCalendarを配置しているViewの横サイズをわずが0.001ポイントずらしただけで正常表示していた端末が異常表示になって
また別の端末ではその逆の現象が起こりました。
さらにさらに、Viewの横サイズではなく、横の配置位置(x)をずらしただけでも同じような状況の変化がありました。
ここまでで、横サイズの小数点計算絡みのバグかなーと思いました。
そして、Githubのissueで探したところ、下記の情報が見つかりました。
iOS 17 doesn't renders the months correctly
とのことで、
ここに書かれている崩れ方とは違いますが、まあ似たようなことが起こっているのと
サイズの小数点が問題に起因しているようにも感じました
対処療法
他人のswiftパッケージの中身を修正してしまうのは手段としては有りますが、
メンテナンス性が悪いので、最終手段としてとっておき、
今回はパッケージの外から表示が崩れないようにコントロールする方針にしました。
storyboardで、ViewをSafeAreaのセンタリング、サイズを90%に設定していました。
これだと、iPhone SE3の端末では、x = 19.5ポイントの位置に配置しておりました。
とりあえずの対処療法としては、小数点が生じないようにすることが重要と考え、
ViewをSafeAreaのセンタリング、サイズを100% - 定数値N ...のような設定に変更しました。
これによって、xの値もwの値も、いずれも整数値となります。
-> これで、小数点が発生せず、FSCalendarの内部の計算も小数点誤差がなくなり、
崩れずに表示できるのでは?と考えました。
動作確認として、
手持ちのiOS端末5種類でFSCalendarを表示したところ
すべての端末でカレンダーの表示崩れが発生しなくなりました。
FSCalendarの表示崩れに困っている方がいらっしゃいましたら、
配置位置とサイズを整数にすれば解決するかもしれません。