【发布时间】:2013-09-24 20:19:34
【问题描述】:
我尝试在 iOS7 上通过 drawRect 绘制自定义 UINavigationBar。随着导航栏和状态栏的变化,我的抽奖开始于 y-origin 20.0,而不是状态栏后面的 0.0。我检查了 wwdc 视频,但我只找到了没有自定义绘图的图像示例。有任何想法吗?我需要在我的子类中设置一些参数吗?
- 基于“Master-Detail Application”新建项目
- 为 UINavigationBar 创建一个子类
- 将 Main.storyboard 中的 UINavigationBar 更改为自定义类
- 关闭半透明[self setTranslucent:NO];
- 在 UINavigationBar 的 sublass 中添加一个真正简单的 drawRect
我做了一个简单的测试:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
UIBezierPath* maskPath = [UIBezierPath bezierPathWithRect: CGRectMake(0, 0, 320, 64)];
[maskPath closePath];
[[UIColor greenColor] setFill];
[maskPath fill];
CGColorSpaceRelease(colorSpace);
绿色的NavigationBar从Statusbar下方开始,如何从Statusbar后面开始绘制?
当前解决方案:
@Redwarp 发布了一个方法,我也做了一个简单的版本来测试:
CustomBGView *testView = [[CustomBGView alloc] initWithFrame:CGRectMake(0, 0, 320, 64)];
RetinaAwareUIGraphicsBeginImageContext(testView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[testView.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self setBackgroundImage:image forBarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];
在自定义 UIView 中,您可以随心所欲地进行绘制,并且您的自定义视图也会出现在 StatusBar 的后面。
【问题讨论】:
-
您找到解决方案了吗?我不明白为什么你的问题被否决了。我也有同样的问题。
-
我也对否决票感到困惑......无论如何,我现在还没有找到解决方案@Redwarp。我希望/希望/打赌您可以设置一个属性,并且您将能够在状态栏后面使用 drawRect 绘制自定义导航栏样式。但也许我错过了另一种方式?
标签: uinavigationbar ios7 drawrect uistatusbar