8

UIScrollViewは、iPhone Xを除くすべてのiPadsまたはiPhoneの左側に空白がない状態で正常に動作します。空白を削除するにはどうすればよいですか?iPhone XのUIScrollViewの左側の不要な空白

私はストーリーボードを使用しています。 Bounce On Scroll/Zoomはすべて無効になっています。 iPadやiPhoneにはiPhone X以外の空白はありません。私はそれがセーフエリア関連のものかもしれないと思います。 safeAreaに制約を相対的に設定

enter image description here

+0

この質問はあまりにもですか? –

+0

あなたはストーリーボードを使用していますか?あなたは安全な場所を見ましたか? –

+0

私はストーリーボードを使用しています。 'Bounce On Scroll/Zoom'はすべて無効になっています。 iPadやiPhoneの場合は、iPhone X以外の空白はありません。セーフエリアのものに関係するものかもしれません... – zsong

答えて

0

まあ、私はこの問題を非エレガントな方法で解決しました。しかし、それは魅力のように機能します。あなたには、いくつかの詳細を与えるvague.can(私はすべての他の回答を試してみました。あなたの助けをありがとう、しかしそれらの答えは、私の場合で動作するようには思えません。)

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: ... 
) 
3

は、iPhone-Xのための良い方法です。 これは、Appleが言う方法です -

ビューが画面上に表示されると、このガイドでは、ナビゲーションバー、タブ・バー、ツールバー、 およびその他の祖先ビューで覆われていない ビューの一部を反映しています。

あなたは safeAreaと制約に scrollViewleading & trailingを与えている、あなたの場合は

、未superView

したがって、あなたがsuperviewにリスクを与える制約を取る場合、あなたのオブジェクトの内容は、クリップして代わりにsafeAreaの、あなたが左に回転させ、特別に最も左からのコンテンツは、iPhone-Xの一番上の部分でクリップされます。

enter image description here

Apple doc for safeAreaLayoutGuide

+0

@zsong、試してみましたか? – Jack

+1

私はそれがバグだと思う。 – zsong

+0

** iPhone-X **では、オブジェクトがコーナーから切り取られないように、notch- ** iOS11 + **には「safeArea」が付いています – Jack

-1

Safe Area Layoutこのホワイトスペースを担当しています。

第一オプション:
は、あなたのscrollviewのための安全なエリアのレイアウトを無視し、そのスーパービュー(またはメインビュー)に関してscrollviewの制約を設定します。 Scrollviewは、スクロール中にコンテンツの安全な領域のインセットを自動的に処理します。

横画面表示:

enter image description here

縦画面表示:

enter image description here


第二オプション:
私はあなたのための安全な地域のレイアウトを変更/削除することはお勧めしませんスクロールビューとスクロールビューが画面全体をカバーしている場合は、あなたのビューコントローラのメインビューに青色の背景色(あなたがスクロールビューのために適用したこと)、を設定

  • :ホワイトスペースの可視性の問題を解決します。
  • あなた viewDidLoad

    @ IBOutlet var scrollView: UIScrollView! 
    
    override func viewDidLoad(){ 
        super.viewDidLoad() 
    
        self.view.backgroundColor = UIColor.yellow // set here blue color that you've applied for your scroll view 
    
        self.scrollView.backgroundColor = UIColor.clear 
    } 
    

    enter image description here

    であなたのスクロールビュー

のための明確な色の背景には、このコードを追加設定

  • ここでは、より良い理解のための安全なエリアのレイアウトに関する良い参考答え、次のとおりです。

  • +0

    ありがとうございます(私はそれを投票していませんでした。 ) – zsong

    0

    この間隔は、読み取り専用プロパティUIScrollview.safeAreaInsetsを使用して見ることができるiPhone X上の横向きのコンテンツインセットとしてUIScrollViewの左/右に適用される安全領域からのものです。あなたが必要といけないとき

    次の行は、安全なエリアインセットを取り除くために使用することができます:

    UIScrollview.contentInsetAdjustmentBehavior = .never

    UIScrollViewContentInsetAdjustmentBehavior.automaticは、コンテンツインセットとして安全なエリアのレイアウトガイドマージンが含まれているデフォルト値。

    注:自動レイアウトの制約は、iOS 11のUIScrollviewコンテンツのインセット調整の動作だけで、インセットとは関係ありません。

    関連する問題