UIScrollView
は、iPhone Xを除くすべてのiPadまたはiPhoneで、左側に空白がなくても正常に機能します。空白を削除するにはどうすればよいですか?
絵コンテを使っています。バウンスオンスクロール/ズームはすべて無効になっています。 iPadやiPhoneにはiPhoneX以外に空白はありません。セーフエリアに関連しているのではないかと思います。
さて、私はこの問題をエレガントではない方法で解決しました。しかし、それは魅力のように機能します。 (私は他のすべての答えを試しました。あなたの助けに感謝します、しかしそれらの答えは私の場合はうまくいかないようです。)
var leftMargin: CGFloat = 0
var rightMargin: CGFloat = 0
if Device.isPhone() && Device.IS_5_8_INCHES() {
self.leftMargin = 44
self.rightMargin = 44
}
let frame = CGRect(
x: (self.view.frame.width - self.leftMargin - self.rightMargin) * CGFloat(pageIndex),
y: ...
)
この間隔は、iPhone Xの横向きのコンテンツインセットとしてUIScrollviewの左右に適用される安全な領域からのものであり、読み取り専用プロパティUIScrollview.safeAreaInsets
を使用して表示できます。
次の行は、必要のないときに安全な領域のはめ込みを取り除くために使用できます:
UIScrollview.contentInsetAdjustmentBehavior = .never
デフォルト値のUIScrollViewContentInsetAdjustmentBehavior.automatic
には、コンテンツのはめ込みとしてセーフエリアレイアウトガイドの余白が含まれています。
注:自動レイアウトの制約はインセットとは関係ありません。iOS11UIScrollviewコンテンツのインセット調整動作だけです。
safeArea
に関連する制約を設定することは、iPhone-Xの良い習慣です。これがAppleの言い方-
ビューが画面に表示されている場合、このガイドには、ナビゲーションバー、タブバー、ツールバー、およびその他の祖先ビューでカバーされていないビューの部分が反映されます。
あなたの場合、leading
ではなくtrailing
でscrollView
の制約safeArea
&superView
を与えています。
したがって、superview
ではなくsafeArea
に制約を与えるリスクを冒すと、オブジェクトコンテンツがクリップされる可能性があります。特に左に回転すると、左端のコンテンツがiPhone-Xのノッチの下でクリップされます。