UiScrollView滚动时调整内容

时间:2017-02-09 13:11:44

标签: ios objective-c iphone uiscrollview

我的UIScrollView存在问题,希望你们中的一些人能以某种方式帮助我。

我解释你......

在我的ViewController的中心,我有一个ScrollView显示3个外部UIViewController的内容。通过经典的for循环,我能够正确显示内容,到目前为止我还没有发现任何问题......

当我在视图控制器之间执行滚动(水平)或者每个视图控制器的内容移动时,问题就出现了,它不会像最初设置的那样保持不变。现在我无法弄清楚问题是否依赖于ScrollView或内容,但我认为这是内容viewcontroller的一个问题,因为我使用autolayout来设置约束......

此时我认为当滚动显示下一个viewcontroller时,ScrollView会出现问题。

下面我插入屏幕拍摄以显示我的情况..因为你可以看到内容被移动到右边并且不会保持在X位置零。

你可以帮我弄清楚我错在哪里吗?什么代码和错误..

ScreenShoot

enter image description here

enter image description here

enter image description here

使用的代码

    -(void)initializeViewControllerTour {
    /* Inserisce in una NSMutableArray i ViewController inizializzati da utilizzare*/
    _a_TourVC = [[UPATour alloc] init];
    _a_TourVC = [self.storyboard instantiateViewControllerWithIdentifier:@"A_Tour_App"];

    _b_TourVC = [[UPBTour alloc] init];
    _b_TourVC = [self.storyboard instantiateViewControllerWithIdentifier:@"B_Tour_App"];

    _c_TourVC = [[UPCTour alloc] init];
    _c_TourVC = [self.storyboard instantiateViewControllerWithIdentifier:@"C_Tour_App"];

    _containerArrayVC = [[NSMutableArray alloc] init];
    [_containerArrayVC addObject:_a_TourVC];
    [_containerArrayVC addObject:_b_TourVC];
    [_containerArrayVC addObject:_c_TourVC];

    NSInteger index = 0;

    /* Imposta i valori per la ScrollView */
    CGSize scrollViewSize = CGSizeMake([_containerArrayVC count] * _scrollView.frame.size.width, _scrollView.frame.size.height);

    _scrollView.contentSize = scrollViewSize;
    _scrollView.scrollEnabled = YES;
    _scrollView.showsVerticalScrollIndicator = NO;
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.pagingEnabled = YES;
    _scrollView.delegate = self;

    /* Imposta il PageControl */
    _pageControl.userInteractionEnabled = NO;
    _pageControl.numberOfPages = [_containerArrayVC count];
    _pageControl.currentPage = index;

    /* Crea il ciclo For per i ViewController basandosi sulla MutableArray */
    for (_currentViewController in _containerArrayVC) {
        [self addChildViewController:_currentViewController];
        CGFloat originx = (index) * _scrollView.frame.size.width;
        _currentViewController.view.frame = CGRectMake(originx, 0, _scrollView.frame.size.width, _scrollView.frame.size.height);
        [_scrollView addSubview:_currentViewController.view];
        [_currentViewController didMoveToParentViewController:self];
        index ++;
    }
}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat pageW = _scrollView.frame.size.width;
    CGFloat segmentPage = _scrollView.contentOffset.x / pageW;
    NSInteger page = lround(segmentPage);
    _pageControl.currentPage = page;

}

0 个答案:

没有答案