2016-04-29 16 views
1

ページングを有効にして、水平UIScrollViewを作成しました。これにより、特定のビューを「スワイプ」することができます。私が持っている問題は、スクロールビューが左に配置されていることです。私は特定のビューを左にスクロールする(読む:スワイプ)しかできません。私はまた、それを右にスワイプさせたいので、両側。私はそれがUIScrollViewの中心にある問題だと思う。私はたくさんのことを試みましたが、すべてうまくいかなかったのです。UIScrollView中央から左右にページング

ここで(vertScrollが水平scrollViewである)私のコードです:イラスト

- (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. 
} 

は説明: enter image description here

答えて

2

contentSizeが1の3倍の大きさでなければなりませんので、あなたは、3ページを作る必要がありますページ、私が見る限り、それは起こっている。

ユーザーは必ず2ページ目(中央ページ)から開始します。これは、contentOffsetをx座標のscrollViewの幅の1倍に設定し、y座標の0を0に設定することで行います。

その後、ユーザーは左右にスクロールすることができます。

PS:あなたのコードを見ることで、あなたが誰もがiPhone 6(375ptの幅)を使用して想定しているように、あなたは(self.view.frame.size.widthまたは相対的なものを使用して)計算された幅を使用することがありますようです

+0

は、ということでしたしかし、 "特定のビュー"は、現在、scrollViewの左側(したがって1ページ目)に配置されています。私はそれをscrollViewの中央に置くことができますか? – user2578311

+0

フレームが正しく設定されていることを確認してください。ページ1の場合、フレームは次のようになります。CGRectMake(0,0、width、height) CGRectMake(幅* 2,0、幅、高さ)になります。 –

+0

これも同様でしたが、scrollViewに残っています(ページ1のように)。 – user2578311

関連する問題