获取错误“:doClip:空路径.”上
CGContextClip(ctx);
当使用Ahmet Ardal的代码为UINavigationBar自定义背景定制时.
理想情况下,我想解决这个错误 – 它会停止Apple的批准吗?
我的理解是它定义了要绘制的剪切区域.我已经使我的导航栏图形尺寸合适,所以理论上它们不需要被剪裁.
因此,注意到违规行.一切似乎都很棒,但担心它可能会产生反响,我不知道
下面是调整的代码,如果你有一个更深的横向条,它可以工作,比如说有一个分段控件
- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
if ([self isMemberOfClass:[UINavigationBar class]] == NO) {
return;
}
//NSLog(@"NAV HEIGHT IS %f %f",self.frame.size.height, self.frame.size.width);
UIImage *image = nil;
if (self.frame.size.width > 320) {
if (self.frame.size.height > 32) {
// Deep NavBar
image = [UINavigationBar bgImageLandscapeDeep];
} else {
image = [UINavigationBar bgImageLandscape];
}
} else {
image = [UINavigationBar bgImagePortrait];
}
NSLog(@"CGContextClip produces <Error>: doClip: empty path. Path is %@",ctx);
//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);
}
最佳答案 我继承了一个带有drawLayer的应用程序:inContext:方法,它调用CGContextClip(…)并生成“< Error>:doClip:empty path”.信息.
提交到商店没有任何问题;我非常有信心这个错误是无害的.
根据Apple的文档:
Parameters
c
A graphics context that contains a path. If the context does not have a current path, the function does nothing.
如果你真的想防止记录错误,你应该在调用CGContextClip(…)之前检查上下文:
if (!CGContextIsPathEmpty(c))
{
CGContextClip(c);
}