drawLayer或方法的drawRect不會被調用,直到你繼承UINavigationBar的,並調用drawRect中出現。
關注該碼 -
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
if([self isMemberOfClass:[UINavigationBar class]])
{
UIImage *image;
image=[UIImage imageNamed:@"title_768.png"];
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);
}
else
{
[super drawLayer:layer inContext:ctx];
}
}
@end
並在代碼中添加MyNavigationBar.h和MyNavigationBar.m文件 -
MyNavigationBar.h -
#import <Foundation/Foundation.h>
@interface MyNavigationBar : UINavigationBar <UINavigationBarDelegate>
@end
MyNavigationBar.m -
#import "MyNavigationBar.h"
@implementation MyNavigationBar
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect
{
UIImage *image;
image=[UIImage imageNamed:@"title_768.png"];
[image drawInRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) ];
}
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
}
@end
現在使用MyNavigationBar子類化您的UINavigationBar。