2012-04-12 2 views
0

У меня есть subclassed UINavigationBar, где я переопределяю drawRect, чтобы предоставить png с прозрачностью в качестве фона. Каждая вещь работает так, как ожидалось, за исключением 1 пикселя в верхней части панели (я вижу, что основная карта перемещается в пространстве).Пользовательский UINavigationBar смещен на 1 пиксель в верхней части

screen shot

Единственное, что я смог найти этот вопрос, который звучит как моя проблема, но я не знаю, что делать объяснения: Empty space of 1 pixel above UINavigationBar

Я проверил, что файл PNG делает не имеет 1 пиксела прозрачности в верхней части изображения.
Перекрытие в наследнике UINavigationBar:

- (void)drawRect:(CGRect)rect { 

[_bg drawInRect:CGRectMake(0, 0, _bg.size.width, _bg.size.height)]; 
// showing correct bounds - drawRect: 0.000000, 0.000000, 320.000000, 85.000000 
NSLog(@"drawRect: %f, %f, %f, %f", rect.origin.x, 
            rect.origin.y, 
            rect.size.width, 
            rect.size.height); 

}

- (CGSize)sizeThatFits:(CGSize)size { 
CGRect frame = [[UIScreen mainScreen] applicationFrame]; 
CGSize sz = CGSizeMake(frame.size.width, _bg.size.height); 
NSLog(@"sizefits"); 
return sz; 

}

спасибо за любую помощь!

+0

Использовал ли вы 24/32-битный PNG-изображение или 8-битный? –

+0

Привет, спасибо за ответ. Я дважды проверен, и он 32-битный. Есть идеи? – Matt

ответ

0

У меня была такая же проблема с моей настраиваемой навигационной панелью, хотя я использовал прокси UIAppearance для установки пользовательского фонового изображения вместо переопределения drawRect :. Это было мое быстрое исправление, в viewWillAppear: на контроллере корневого представления:

// Make sure nav bar is flush with status bar (iOS 5 iPhone portrait somehow gives status bar height 20 and nav bar y 20.5, so we miss a pixel). 
CGRect navBarFrame = self.navigationController.navigationBar.frame; 
navBarFrame.origin.y = [UIApplication sharedApplication].statusBarFrame.size.height; 
self.navigationController.navigationBar.frame = navBarFrame; 
Смежные вопросы