我有一个子类UINavigationBar,我在其中覆盖drawRect以提供透明度作为背景的png。每个东西都按预期工作,除了条形顶部的1个像素空间(我可以看到底层地图在空间中移动)。
我唯一能找到的是这个问题听起来像我的问题,但我不知道该解释是什么: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 :(得分: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;