2020-01-01から1年間の記事一覧

Compositional Layouts Self-Sizing のはまりどころと複雑なレイアウト例

github.com 紹介するコードは上記リポジトリにあげてあります。 はまりどころ 1. itemSize と groupSize を .estimated にする必要がある 例えば、height が可変の場合、グループの heightDimension を .estimated にして、レイアウトアイテムの heightDimen…

Compositional Layout におけるレイアウト構築のおすすめ

Compositional Layout の2列表示 Compositional Layout を使って、上記のような一方向のみスクロールできるグリッドレイアウトを構築する場合の実装方法についてのおすすめ。 基本 制約との二重管理になってしまうので可能な限り .absolute の使用は避け、 S…

DiffableDataSource で apply 後の UICollectionView の contentSize を取得する

問題 UICollectionViewDataSource を使っている場合では、 下記のように reloadData 直後には collectionView の contentSize が更新されている。 collectionView.reloadData() collectionView.layoutIfNeeded() // collectionView.contentSize が更新されて…

Appearance の設定方法

iOS 13 から Appearance の設定方法が追加されていた。 以前の方法もまだ非推奨になっておらず引き続き利用できるみたいだけど、 Legacy Customizations と表記されていて新しい設定方法が推奨されている。 新しい設定方法は standardAppearance プロパティ…

LaunchScreen の変更が反映されないとき

LaunchScreen の storyboard に加えた変更が全く反映されなくなった。 Target の設定で LaunchScreen File のファイルを変更してみたところ、ファイル自体の変更は効くようだった。 変更前の内容がキャッシュされているのかと思って、 Xcode で Clean Build …

DarkMode 対応したらアプリ起動時にクラッシュするようになってしまった

事象 DarkMode 対応したら、アプリ起動時にクラッシュするようになってしまった。 クラッシュ内容は、アプリ起動時に表示する VC である TopViewController の viewDidLoad() 内での EXC_BREAKPOINT で、 iOS 13 系の端末のみで発生する模様。 スタックトレ…

AssociatedValue の有りと無しの case を複数持つ Enum を Decode する

AssociatedValue が無い case が1つ enum Food { case hamburger(topping: String) case pizza } 上記のような Enum がありまして、これを Decodable に準拠すると extension Food: Decodable { enum CodingKeys: String, CodingKey { case hamburger case …