2016-04-29 4 views
1

Я сделал горизонтальный UIScrollView с включенным пейджингом. Это позволяет мне «пронести» определенное мнение. Проблема в том, что scrollview расположен слева. Я могу только прокручивать (читай: салфетки) мое определенное представление влево. Я также хочу, чтобы он провёл вправо, так что обе стороны. Я думаю, что это проблема с центрированием 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

Вы должны сделать 3 страницы, поэтому contentSize должен быть в 3 раза размер одного странице, насколько я вижу, это происходит.

Теперь убедитесь, что пользователь всегда запускается на стр. 2 (центральная страница), сделав это, установив для параметра contentOffset значение 1x ширины scrollView для координаты x и 0 для координаты y.

После этого пользователь должен иметь возможность прокручивать влево и вправо.

PS: глядя на ваш код, кажется, что вы предполагаем, каждый использует iPhone 6 (ширина 375pt), вы можете использовать расчетную ширину (с помощью self.view.frame.size.width или что-то относительно)

+0

ли что , но теперь «определенная точка зрения» находится на левой стороне (так, страница 1) scrollView. Как я могу сосредоточить его (или разместить на странице 2) в scrollView? – user2578311

+0

Просто убедитесь, что кадр установлен правильно, поэтому для страницы 1 будет отображаться: 'CGRectMake (0,0, ширина, высота)', для страницы 2 (в центре) это будет: 'CGRectMake (ширина, 0, width, height) 'и для страницы 3 это будет' CGRectMake (ширина * 2,0, ширина, высота) ' –

+0

Сделал это, но он все еще остается слева в scrollView, поэтому на странице 1. – user2578311

Смежные вопросы