Размещение UIScrollView на главном представлении контроллера разделенного представления - PullRequest
0 голосов
/ 31 марта 2011

У меня странная проблема.У меня есть контроллер разделенного представления и в подробном представлении у меня есть представление прокрутки.Внутри прокрутки у меня есть значок с некоторой информацией.

Когда приложение впервые открывается в альбомной ориентации, представление прокрутки всегда располагается на полпути вниз по отношению к представлению детализации.Когда я прикасаюсь к элементу в корневом представлении и отображается следующий вид, затем я возвращаюсь к представлению с прокруткой, представление с прокруткой находится в правильном месте (10,10).

Я установил рамку вида прокрутки в методе viewWillAppear вида детализации.Вот мой код:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    if (([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) ||
        ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown)) {

        [self setPortrait];
        CGRect tmpR = [self.view frame];
        NSLog(@"The Detail View Controller Portrait view: width: %f height: %f",tmpR.size.width, tmpR.size.height);

    } else {

        [self setLandscape];
        CGRect tmpR = [self.view frame];
        NSLog(@"The Detail View Controller Portrait view: width: %f height: %f",tmpR.size.width, tmpR.size.height);

    }

    // show the front page message....
    [self setMessage:kDetailViewMessage];

    // make sure the scroll is at the top....
    [scrollView setContentOffset:CGPointMake(0, 0)];
}


-(void)setLandscape {

    // set the proper scroll view size...
    CGRect navigationBarFrame = self.navigationController.navigationBar.frame;
    CGRect detailWindowFrame = splitView.detailViewController.view.frame;

    CGRect sframe = CGRectZero;
    sframe.origin = CGPointMake(10, 10 + navigationBarFrame.size.height);
    sframe.size = CGSizeMake(detailWindowFrame.size.width - 20, detailWindowFrame.size.height - 20);

    [self.scrollView setFrame:sframe];

    [detailDescriptionLabel setFrame:CGRectMake(0, 0, sframe.size.width, sframe.size.height)];

    [detailDescriptionLabel sizeToFit];
}

Прямо сейчас приложение будет отображаться только в альбомной ориентации, а функция setPortrait не вызывается.

Это сводит меня с ума уже несколько часов ...... Есть идеи?

1 Ответ

0 голосов
/ 31 марта 2011

Я думаю, вам нужно установить границы границ представления контента, а не фрейма. (Во всяком случае, так работает NSScrollView.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...