J'ai eu le même problème lorsque j'ai implémenté les méthodes suivantes pour définir le remplacement de l'image de barre de navigation spécifique pour l'orientation paysage. Pour se débarrasser de l'erreur clip je commentais la partie CGContextClip du code comme indiqué ci-dessous:
@implementation UINavigationBar(CustomBackground)
+ (UIImage *) bgImagePortrait
{
static UIImage *image = nil;
if (image == nil) {
image = [[UIImage imageNamed:@"iPhoneHeader_portrait"] retain];
}
return image;
}
+ (UIImage *) bgImageLandscape
{
static UIImage *image = nil;
if (image == nil) {
image = [[UIImage imageNamed:@"iPhoneHeader_landscape"] retain];
}
return image;
}
- (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];
//CGContextClip(ctx); // Causes '<Error>: doClip: empty path.' error when changing views.
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);
}
@end
Je ne sais pas quoi faire sur doClip ... ai-je tord? http://i259.photobucket.com/albums/hh299/PirateOrion/Screenshot2010-06-11at122913PM.png – BadPirate
Vous le faites correctement, mais regardez la case à cocher: Le point d'arrêt n'est pas lié. Essayez de vous lier à ApplicationServices. Si cela ne vous aide pas, je suppose que la fonction est 'static' et ne peut donc pas être nommée dans un point d'arrêt. –
J'ai découvert que vous pouvez déclencher le point d'arrêt si vous cassez CGPostError. – memmons