我尝试在 iOS7 上通过 drawRect 绘制自定义 UINavigationBar。随着导航栏和状态栏的变化,我的抽奖开始于 y-origin 20.0,而不是状态栏后面的 0.0。我检查了 wwdc 视频,但我只找到了没有自定义绘图的图像示例。有任何想法吗?我需要在我的子类中设置一些参数吗?
- 基于“Master-Detail Application”创建一个新项目
- 为 UINavigationBar 创建一个子类
- 将 Main.storyboard 中的 UINavigationBar 更改为自定义类
- 关闭半透明 [self setTranslucent:NO];
- 向 UINavigationBar 的子类添加一个真正简单的 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 中,您可以随心所欲地进行绘制,并且您的自定义视图也会出现在状态栏的后面。