課題
UICalendarViewをUIViewRepresentableを使ってSwiftUIで表示しようとした際に思い通りの大きさにならないことがあった.筆者は確認していないが,AutoLayoutでもうまく行かないことがあるらしい.
状況
SwiftUIのframeサイズ指定で画面の3分の1の幅を指定しているが反映されていない.
解決
setContentCompressionResistancePriority
を.defaultLow
に設定することで思い通りのサイズを指定できるようになった.
calendar.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
解説
setContentCompressionResistancePriority
はコンテンツの潰れにくさを設定することができる.やりすぎると字がつぶれてしまって表示できない部分も出てくるが少し窮屈でもいいから表示したいときなどに便利そう.