Прозрачная панель навигации на iPhone - PullRequest
0 голосов
/ 02 октября 2010

Я пытаюсь отобразить прозрачный UINavigationBar поверх Scrollview.

Это реальный результат кода, который я написал ...

alt text

где, как я ожидаю, будет отображаться вид, как показано на рисунке ниже, что происходит после того, как я слегка прокручиваю изображение.

alt text

Код:

 - (void) loadView {
    CGRect pagingScrollViewFrame = [self frameForPagingScrollView];

    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor blackColor];
    pagingScrollView.showsVerticalScrollIndicator = NO;
    pagingScrollView.showsHorizontalScrollIndicator = NO;
    pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width * [self imageCount], 
                                              pagingScrollViewFrame.size.height);
    pagingScrollView.delegate = self;

    self.wantsFullScreenLayout = YES;
    pagingScrollView.scrollsToTop = YES;
    self.view = pagingScrollView;
}

вопрос в том, как мне сделать представление загруженным, как я ожидал, без взаимодействия с пользователем? приветствуется любое предложение или помощь ..

РЕДАКТИРОВАТЬ: я создаю представление полностью из CODE

Ответы [ 9 ]

4 голосов
/ 06 октября 2010
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.tintColor = [UIColor blackColor];

И сделать вашу строку состояния прозрачной.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 
[self setWantsFullScreenLayout:YES];

У меня есть это в моем завещании воли, и я перезагружаю его в моем представлении исчезновения.

4 голосов
/ 02 октября 2010

Похоже, вы пытаетесь сделать это в коде, а не в IB. Если это так, вы должны поместить свой код в viewDidLoad делегата приложения (например, MyProgramAppDeligate класс или что-то еще). Если вы хотите использовать его в некоторых видах, поместите его в viewDidLoad класса / подкласса UINavigationController.

Удовлетворяет ли это ваше требование?

0 голосов
/ 18 мая 2013

В viewWillAppear прокрутите содержимое в нужное место.

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

    UIScrollView *scrollView = (UIScrollView *)self.view;
    [scrollView setContentSize:CGSizeMake(320,568)];
    [scrollView scrollRectToVisible:CGRectMake(0, 548, 320, 20) animated:NO];
}
0 голосов
/ 08 октября 2010

В viewDidLoad попробуйте переместить начало координат вверх на 32 пикселя, а также увеличьте высоту на 32 пикселя:

pagingScrollView.frame = CGRectMake(pagingScrollView.frame.origin.x, pagingScrollView.frame.origin.y-32, pagingScrollView.frame.size.width, pagingScrollView.frame.size.height+32);
0 голосов
/ 07 октября 2010

Пробовали ли вы установить рамку вида прокрутки с началом координат Y, равным 0, после установки прозрачной навигационной панели?

РЕДАКТИРОВАТЬ: я имею в виду, вы не говорите, какая рамка используется в вашем коде.

0 голосов
/ 07 октября 2010

Поскольку вы говорите, что он работает нормально после небольшой прокрутки изображения пользователем, проблема может заключаться в том, что метод UINavigationBar drawRect: не вызывается после загрузки UIScrollView. *

Предложение: Можно ли явно вызвать setNeedsDisplay на панели навигации после загрузки представления?

0 голосов
/ 06 октября 2010

Код, который вы разместили, не имеет ничего общего с непрозрачностью панели навигации.Покажите, где вы устанавливаете конфигурацию компонентов представления.Там вы можете просто установить альфа на панели навигации.В качестве альтернативы, если вы используете перья, просто установите альфа в IB.

0 голосов
/ 05 октября 2010

Это может быть конфликт между IB и вашим кодом. Я бы добавил строку кода, предложенную Ортвином в методе viewDidLoad, а затем дважды проверил, что вы установили navBar в полупрозрачный в IB.

0 голосов
/ 05 октября 2010

Вы должны установить

self.navigationController.navigationBar.translucent = YES;

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

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