2016-03-24 7 views
0

Ich habe ein customView (UIView) erstellt, das ein UIScrollView als Unteransicht enthält, und Objekte, die ich auf die scrollView legte, wurden nicht angezeigt. Um es zu testen, habe ich der scrollView eine UIView hinzugefügt, die auch nicht angezeigt wurde (siehe Codebeispiel unten). Da der Inhalt, den ich in der scrollView einfügen möchte, dynamisch ist, möchte ich das Problem mit AutoLayout angehen. Ich probierte verschiedene Methoden aus und befolgte die Anweisungen online, nichts davon funktionierte, alle ähnlichen Fragen waren UIScrollView, das in einem UIViewController erstellt wurde.UIScrollView als Unteransicht von UIView funktioniert nicht mit automatischem Layout

Hier ist mein Code, ich bin mit Mauerwerk:

@interface CustomView : UIView 

@end 

@implementation CustomView 

- (instancetype)init { 
    if (self = [super init]) { 

     self.scrollView = [[UIScrollView alloc]init]; 
     self.scrollView.backgroundColor = [UIColor redColor]; 
     [self addSubview:self.scrollView]; 
     [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { 
      make.edges.equalTo(self); 
     }]; 

    //Here I add someView to the scrollView, and when I create an instance of the scrollView, the someView does not show. 

    self.someView = [[UIView alloc]init]; 
    self.someView.backgroundColor = [UIColor blackColor]; 
    [self.scrollView addSubview:self.someView];   
    [self.someView mas_makeConstraints:^(MASConstraintMaker *make) { 
     make.edges.equalTo(self.scrollView); 
     make.size.equalTo(CGSizeMake(40, 40)); 
    }]; 
} 
return self; 
} 

Hier ist, wie ich eine Instanz der Custom

CustomView *customView = [[CustomView alloc]init]; 
[self.view addSubview: customView]; 
[customView mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.top.equalTo(64.0); 
    make.height.equalTo(40.0); 
    make.leading.trailing.equalTo(0); 
}]; 

Gibt es etwas, was ich verpasst oder falsch gemacht haben erstellen, die someView verursacht nicht zeigen?

Vielen Dank für Ihre Hilfe.

+0

Wird Ihre Bildschirmansicht wie erwartet angezeigt? Bitte überprüfen Sie, ob Sie den richtigen Frame erhalten, wenn Sie Constraint für scrollview und someview setzen. Gibt es auch einen Fehler bei der automatischen Anzeige in der Konsole? – HardikDG

+0

Vielen Dank @pyro für die Erinnerung an einen Haltepunkt und überprüfen Sie meine Bildlaufansicht, ich müde und die Ansicht wurde richtig erstellt. Ein Mitarbeiter hat mir geholfen, diesen Fehler zu beheben, indem ich die überflüssige Schicht von UIView entfernt habe und AutoLayout korrekt verwendete. – CeliaLi

Antwort

0

Ich löste das Problem durch: 1) .Verwenden ScrollView direkt als SubView in einer UIView (meine customView). 2) Achten Sie darauf, die rechten und unteren Einschränkungen der scrollView hinzuzufügen.