2016-04-29 6 views
1

Ich machte eine horizontale UIScrollView, mit Paging aktiviert. So kann ich eine bestimmte Sichtweise "wischen". Das Problem, das ich habe, ist, dass der Scrollview nach links positioniert ist. Ich kann nur meine bestimmte Ansicht nach links scrollen (lesen: streichen). Ich möchte es auch nach rechts streichen lassen, also beide Seiten. Ich denke, es ist ein Problem mit der Zentrierung der UIScrollView. Ich habe viele Dinge ausprobiert, aber es hat nicht geklappt.UIScrollView Paging von Mitte nach links und rechts

Hier ist mein Code (vertScroll die horizontale Scrollview ist):

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    vertScroll.contentSize = CGSizeMake(3*375, 232); 
    vertScroll.frame = CGRectMake(0, 0, 375, 232); 
    vertScroll.pagingEnabled = YES; 

    vertScroll.scrollEnabled = YES; 
    vertScroll.showsHorizontalScrollIndicator = YES; 

    vertScroll.contentOffset = CGPointMake(375, 0); 


    self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; 


    [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:255.0 green:125.0 blue:71.0 alpha:1.0]]; 
    self.navigationController.navigationBar.topItem.title = @"blabla"; 

    [self.navigationController.navigationBar setTitleTextAttributes: 
    @{NSForegroundColorAttributeName:[UIColor whiteColor], 
     NSFontAttributeName:[UIFont fontWithName:@"StoneSansBold" size:21]}]; 

    self.scrollView.showsVerticalScrollIndicator=YES; 
    self.scrollView.scrollEnabled=YES; 
    self.scrollView.userInteractionEnabled=YES; 

    self.scrollView.contentSize = CGSizeMake(320, 800); 

    UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 

    // add effect to an effect view 
    self.effectView = [[UIVisualEffectView alloc]initWithEffect:blur]; 
    self.effectView.alpha = 0.9; 
    self.effectView.frame = CGRectMake(self.coverImage.frame.origin.x, self.coverImage.frame.origin.y+108, self.coverImage.frame.size.width, 34); 

    // add the effect view to the image view 
[self.coverImage addSubview:self.effectView]; 

    [self.cellView addSubview:self.seismo]; 


    self.seismo = [[UIImageView alloc]initWithFrame:CGRectMake(2, self.coverImage.frame.size.height/2, 40, 40)]; 
    self.seismo.animationImages = [NSArray arrayWithObjects: 
             [UIImage imageNamed:@"tmp-0.gif"], 
             [UIImage imageNamed:@"tmp-1.gif"], 
             [UIImage imageNamed:@"tmp-2.gif"], 
             [UIImage imageNamed:@"tmp-3.gif"],[UIImage imageNamed:@"tmp-4.gif"], nil]; 
    self.seismo.animationDuration = 1.0f; 
    self.seismo.animationRepeatCount = 0; 
    [self.seismo startAnimating]; 
    [self.cellView addSubview:self.seismo]; 
    self.seismo.alpha = 0.0; 

    [self.cellView setFrame:CGRectMake(375, 0, 375, 232)]; 




      // Do any additional setup after loading the view, typically from a nib. 
} 

Erklärung mit einer Illustration: enter image description here

Antwort

2

Sie 3 Seiten machen sollten, so dass der Content 3 mal von einer Größe sein sollte Seite, soweit ich sehen kann, passiert das.

Stellen Sie nun sicher, dass der Benutzer immer auf Seite 2 (der mittleren Seite) startet, indem Sie contentOffset auf 1x die Breite der scrollView für die x-Koordinate und 0 für die y-Koordinate setzen.

Danach sollte der Benutzer in der Lage sein, nach links und rechts zu scrollen.

PS: um Ihren Code suchen, scheint es, wie Sie alle gehen davon verwendet ein iPhone 6 (Breite 375pt), könnte man die berechnete Breite verwenden möchten (durch self.view.frame.size.width oder etwas Relatives verwenden)

+0

dass Did , aber die "bestimmte Ansicht" befindet sich jetzt auf der linken Seite (so Seite 1) der scrollView. Wie kann ich es im scrollView zentrieren (oder auf Seite 2 setzen)? – user2578311

+0

Stellen Sie nur sicher, dass der Rahmen richtig eingestellt ist, also wird für Seite 1 der Rahmen: 'CGRectMake (0,0, Breite, Höhe)', für Seite 2 (Mitte) wird es sein: 'CGRectMake (Breite, 0, width, height) 'und für Seite 3 wird es' CGRectMake (Breite * 2,0, Breite, Höhe) 'sein. –

+0

Hat das auch gemacht, aber es bleibt immer noch in der scrollView, also auf Seite 1. – user2578311