2014-07-11 2 views
13

Ich bin neu in der Programmierung von objective-C.Warum lässt UIScrollView oben Platz und scrollt nicht nach unten

Ich benutze UIScrollView mit einigen Etiketten, Bild und Textansicht darauf.

Ich habe Autolayout ausgeschaltet und habe bereits versucht mit "Scroll View Insets anpassen" an (Situation im Titel beschrieben) und aus (Scroll nicht).

Dies ist, was ich in viewDidLoad einfügen:

[scroller setScrollEnabled:YES]; 
[scroller setContentSize:CGSizeMake(320, 687)]; 

Aber ich muss etwas sehr einfach fehlen.

+0

Versuchen mit einer großen Anzahl in Content wie CGSizeMake (320, 1687) – Yogendra

+0

Es funktioniert. Danke. Aber ich habe immer noch etwas Platz oben. – user3686588

+3

Deaktivieren Sie unter Top Bars auf Ihrem Controller –

Antwort

32

1 ... Warum ist UIScrollView Raum auf

Mit Storyboard verlassen - Goto-View-Controller> Attribut-Inspektor> Uncheck Scroll Sicht Anpassen Insets Eigenschaft

mit Code - Für zusätzlichen Platz setzen Sie viewController Eigenschaft automaticallyAdjustsScrollViewInsets zu NO, standardmäßig ist es YES.

self.automaticallyAdjustsScrollViewInsets = false; 
scroller.contentInset = UIEdgeInsetsZero; 
scroller.scrollIndicatorInsets = UIEdgeInsetsZero; 
scroller.contentOffset = CGPointMake(0.0, 0.0); 

2 ... bewegen sich nicht auf dem Boden

Um es in contentSize wie CGSizeMake(320, 1687) mit einer großen Anzahl zu machen zu bewegen versuchen. Wenn es funktioniert, bedeutet das, dass Sie die contentSize nicht groß genug einstellen, um alle Inhalte zu haben.

0

Ihrer Ansicht .m-Datei, verwenden Sie diesen Code, um dieses Problem zu beheben

-(void)layoutSubviews{ 
    // To fix iOS8 bug of scrollView autolayout 
    if([[[[[UIDevice currentDevice]systemVersion] componentsSeparatedByString:@"."]objectAtIndex:0] integerValue] == 8){ 
     [self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    } 
} 
27

einfach Ihre View-Controller und Satz gezeigt Option auf false (Markierung aufheben) wählen

ViewController Inspector

+0

Dies ist eigentlich der richtige Weg, um es zu beheben, danke Mann! – jovobe

5

Swift 3.0

self.automaticallyAdjustsScrollViewInsets = false 

scrollView.contentInset = UIEdgeInsets.zero 

scrollView.scrollIndicatorInsets = UIEdgeInsets.zero;  
0

Swift 3,0

self.automaticallyAdjustsScrollViewInsets = false 

scrollView.contentInset = UIEdgeInsets.zero 

scrollView.scrollIndicatorInsets = UIEdgeInsets.zero;  

scrollView.contentOffset = CGPoint(x: 0.0, y: 0.0); 
0

Swift 3 (Auto-Layout)

  1. Change "Layout-Ränder" auf explizite
  2. Stellen Sie die Ränder auf Ihre Bedürfnisse

enter image description here

0
if #available(iOS 11.0, *) { 
    scrollView.contentInsetAdjustmentBehavior = .never 
} else { 
    automaticallyAdjustsScrollViewInsets = false 
} 
0

Eigentlich hat der Rand nichts mit ScrollViewInsets oder contentOffset zu tun.Es ist nur ein Konflikt zwischen SuperView.Top und SafeArea.Top Pinning, geschieht, wenn Sie die UIScrollView nach oben, unten, links und rechts anheften.

Dies ist der richtige Weg, um den oberen Rand abzudecken.

1) Pin alle vier Seiten.

Pinning

2) Wählen Sie die obere Einschränkung> Ändern der zweiten Artikel zur Superview.Top

conflict

3) Dann wird der letzte Schritt, um die Konstante auf 0 (Null zu ändern ist). enter image description here

Sie könnten dies will auch überprüfen: https://github.com/29satnam/MoveTextFieldWhenKeyboardAppearsSwift