8

UIScrollView działa dobrze bez białej spacji po lewej stronie na wszystkich iPadach lub iPhone'ach z wyjątkiem iPhone X. Jak usunąć białą przestrzeń?Niechciana biała przestrzeń po lewej stronie UIScrollView na iPhonie X

Używam scenorysów. Bounce On Scroll/Zoom są wyłączone. Brak białych spacji na iPadzie lub iPhonie z wyjątkiem iPhone'a X. Myślę, że może to być coś związanego z funkcją Bezpieczny obszar.

enter image description here

+0

To pytanie jest zbyt nieprecyzyjne. Czy możesz podać więcej szczegółów? –

+0

używasz storyboardów? czy patrzyłeś na bezpieczne obszary? –

+0

Używam storyboardu. 'Bounce On Scroll/Zoom' są wyłączone. Brak białych spacji na iPadzie lub iPhonie z wyjątkiem iPhone'a X. Myślę, że może to być coś związanego z zagadnieniem Bezpieczny obszar ... – zsong

Odpowiedz

0

Cóż, rozwiązałem ten problem w nie-elegancki sposób. Ale działa jak urok. (Wypróbowałem wszystkie inne odpowiedzi. Dziękuję za pomoc, ale te odpowiedzi nie działają w moim przypadku.)

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

Ustawianie przymusu względem safeArea jest dobra praktyka dla iPhone-X. To jest jak jabłko mówi -

Gdy widok jest widoczny na ekranie, ten przewodnik odzwierciedla część pogląd, że nie jest objęta pasków nawigacyjnych, barów zakładce paski narzędzi, i innych poglądów przodka.

W twoim przypadku dajesz ograniczeń leading & trailing o scrollView z safeArea, Nie superView

Stąd jeśli wziąć ryzyko dając ograniczenie do superview zamiast safeArea swoją treścią obiektu może obcięta, szczególnie gdy obrót w lewo , zawartość od lewej najbardziej klipy pod najwyższym nacięciem iPhone-X.

enter image description here

Apple doc for safeAreaLayoutGuide

+0

@zsong, czy próbowałeś? – Jack

+1

Myślę, że to błąd. – zsong

+0

W ** iPhone-X **, Aby zapobiec obcięciu obiektu z rogu, wycięcie- ** iOS11 + ** jest dostarczane z 'safeArea' – Jack

-1

Safe Area Layout jest odpowiedzialny za ten białej przestrzeni.

1-te Opcja:
Ignoruj ​​bezpieczny układ kierunkowy dla Scrollview i ustawić ograniczenia Scrollview w odniesieniu do jego Super View (lub widoku głównym). Scrollview automatycznie obsługuje zawartość obszaru bezpiecznego podczas przewijania.

Krajobraz Widok:

enter image description here

Portret Widok:

enter image description here


2-ty Opcja:
Nie zaleca się usunąć/zmienić bezpieczny układ obszar na swój przewiń widok i alternatywne rozwiązanie, które może rozwiązać problem białą przestrzeń widoczności:

  • Ustaw niebieski kolor tła (które zostały zastosowane do widoku przewijania) do głównego widoku kontrolerze widoku, jeśli widok przewijania zakrywa cały ekran.
  • ustawić jasny kolor tła dla widoku przewijania

Dodaj ten kod w swoim 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

Oto dobre odpowiedzi referencyjne dotyczące bezpiecznej okolicy układ, dla lepszego zrozumienia:

+0

Dziękuję. (Nie głosowałem nad tym przy okazji.) – zsong

0

Ten odstęp jest z bezpiecznego obszaru, który jest stosowany w lewo/prawo UIScrollView jako wypustkami treści w orientacji poziomej na iPhone X, które mogą być postrzegane tylko do odczytu za pomocą właściwości UIScrollview.safeAreaInsets.

następujący wiersz może być używany, aby pozbyć bezpiecznych wypustkami obszaru kiedy nie trzeba:

UIScrollview.contentInsetAdjustmentBehavior = .never

Wartością domyślną jest UIScrollViewContentInsetAdjustmentBehavior.automatic obejmuje obszar bezpieczny margines prowadzące układ jak wypustkami treści.

Uwaga: ograniczenia dotyczące układu automatycznego nie mają nic wspólnego z wstawkami, a jedynie regulacja zachowań wchodzących w skład iOS 11 UIScrollview.