Мне нужно определить высоту UINavigationBar
- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
NSLog(@"NAV HEIGHT IS %d %d",self.frame.size.height, self.frame.size.width);
}
Печатает 0 для высоты
И пока я на нем, почему ширина 1078329344 и 1077936128?Какие единицы используются Apple? Это какой-то странный расчет, основанный на 326 точек на дюйм?
Фон ...
Я использую технику перегрузки drawrect, чтобы добавить пользовательскую графику в UINavigationBars черезПриложение.
Все хорошо, но одна проблема: когда в ландшафтном режиме и в UINavigationBar есть UISegmentControl, высота увеличивается от более короткого пейзажа к той же высоте, что и в портретном режиме.
код может определить ширину, почему он не может определить высоту?NSLOg ниже возвращает 0
Если бы я мог сказать, как высоко был UINavigationBar, я мог бы соответственно поменять графику
- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
if ([self isMemberOfClass:[UINavigationBar class]] == NO) {
return;
}
UIImage *image = (self.frame.size.width > 320) ?
[UINavigationBar bgImageLandscape] : [UINavigationBar bgImagePortrait];
NSLog(@"NAV HEIGHT IS %d %d",self.frame.size.height, self.frame.size.width);
CGContextClip(ctx);
CGContextTranslateCTM(ctx, 0, image.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextDrawImage(ctx, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage);
}
Над кодом Ахмета Ардала (спасибо)