Прокрутка Просмотр добавления взглядов друг на друга - PullRequest
0 голосов
/ 13 марта 2012

Я могу добавить несколько скролл-обзоров с измененными цветами фона, и он отлично работает. Так что в основном для каждого вида у вас разные цвета фона. Однако, когда я пытаюсь добавить отдельные представления для каждого из них, он добавляет его прямо поверх другого, и я не знаю почему.

UIViewController *view1 = [self.storyboard instantiateViewControllerWithIdentifier:@"View1"];
UIViewController *view2 = [self.storyboard instantiateViewControllerWithIdentifier:@"View2"];
UIViewController *view3 = [self.storyboard instantiateViewControllerWithIdentifier:@"View3"];


for (NSInteger i=0; i<ScrollViewControllerNumberOfPages; i++) {
    CGFloat yOrigin = i * self.view.frame.size.height;
    CGRect subViewFrame = CGRectMake(yOrigin, 0, pageHeight, pageWidth);
    NSLog(@"Printing Width and Height %f  %f",pageWidth,pageHeight);
    UIView *subView = [[UIView alloc] initWithFrame:subViewFrame];

    // Pick a random colour for the view
    CGFloat randomRed = ((CGFloat)(arc4random() % 1000))/1000;
    CGFloat randomGreen = ((CGFloat)(arc4random() % 1000))/1000;
    CGFloat randomBlue = ((CGFloat)(arc4random() % 1000))/1000;
    subView.backgroundColor = [UIColor colorWithRed:randomRed green:randomGreen blue:randomBlue alpha:1];
    NSLog(@"printin i %i", i);
    if (i == 0)
    subView = view1.view;
    else if (i == 1)
        subView = view2.view;
[self.scrollView addSubview:subView];
}

1 Ответ

1 голос
/ 13 марта 2012

Это своего рода выстрел в темноте, потому что ваш код требует серьезного переосмысления.

Что вы делаете, вы выделяете subview, изменяете его кадр и фон, а затем полностью игнорируетеэто и установите его в представление ранее созданного viewcontoller.

Это должно работать (в некотором роде):

UIViewController *view1 = [self.storyboard instantiateViewControllerWithIdentifier:@"View1"];
UIViewController *view2 = [self.storyboard instantiateViewControllerWithIdentifier:@"View2"];
UIViewController *view3 = [self.storyboard instantiateViewControllerWithIdentifier:@"View3"];

for (NSInteger i=0; i<ScrollViewControllerNumberOfPages; i++) {
    CGFloat yOrigin = i * self.view.frame.size.height;
    CGRect subViewFrame = CGRectMake(yOrigin, 0, pageHeight, pageWidth);
    NSLog(@"Printing Width and Height %f  %f",pageWidth,pageHeight);

    UIView *subView;

    if (i == 0)
      subView = view1.view;
    else if (i == 1)
      subView = view2.view;

    subView.frame = subViewFrame;

    // Pick a random colour for the view
    CGFloat randomRed = ((CGFloat)(arc4random() % 1000))/1000;
    CGFloat randomGreen = ((CGFloat)(arc4random() % 1000))/1000;
    CGFloat randomBlue = ((CGFloat)(arc4random() % 1000))/1000;
    subView.backgroundColor = [UIColor colorWithRed:randomRed green:randomGreen blue:randomBlue alpha:1];
    NSLog(@"printin i %d", i);
    [self.scrollView addSubview:subView];
}

Это может выглядеть немного лучшеесли вы делаете это как:

for (NSInteger i=0; i<ScrollViewControllerNumberOfPages; i++) {
    CGFloat yOrigin = i * self.view.frame.size.height;
    CGRect subViewFrame = CGRectMake(yOrigin, 0, pageHeight, pageWidth);
    NSLog(@"Printing Width and Height %f  %f",pageWidth,pageHeight);

    UIViewController *subViewCont = [self.storyboard instantiateViewControllerWithIdentifier:[NSString stringWithFormat:@"View%d",i+1]];

    UIView *subView = subViewCont.view;

    subView.frame = subViewFrame;

    // Pick a random colour for the view
    CGFloat randomRed = ((CGFloat)(arc4random() % 1000))/1000;
    CGFloat randomGreen = ((CGFloat)(arc4random() % 1000))/1000;
    CGFloat randomBlue = ((CGFloat)(arc4random() % 1000))/1000;
    subView.backgroundColor = [UIColor colorWithRed:randomRed green:randomGreen blue:randomBlue alpha:1];
    NSLog(@"printin i %d", i);
    [self.scrollView addSubview:subView];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...