UINavigationBar+BackGroundImg.h
#import <UIKit/UIKit.h>
@interface UINavigationBar (BackGroundImg)
@end
UINavigationBar+BackGroundImg.m
#import "UINavigationBar+BackGroundImg.h"
@implementation UINavigationBar (BackGroundImg)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed:@"nav_bg.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
原来使用的[self.navigationController.navigationBar drawRect:CGRectZero];运行一切正常,但控制台输出报错信息:
<Error>: CGContextSaveGState: invalid context 0x0
<Error>: CGContextSetBlendMode: invalid context 0x0
<Error>: CGContextSetAlpha: invalid context 0x0
<Error>: CGContextTranslateCTM: invalid context 0x0
<Error>: CGContextScaleCTM: invalid context 0x0
<Error>: CGContextDrawImage: invalid context 0x0
<Error>: CGContextRestoreGState: invalid context 0x0
这是由于直接手动调用drawRect方法导致的。
将调用方式改成以下形式:
[self.navigationController.navigationBar setNeedsDisplay];
通过调用setNeedsDisplay方法,会自动调用到drawRect方法,这样问题就解决了。
分享到:
相关推荐
flex 鼠标 drawRect 画矩形
iOS下用drawRect进行基本的视图绘制,使用swift
drawrect
matlab开发-DrawRect。在具有给定颜色(“R”、“G”或“B”)的输入图像上绘制1像素矩形。
覆盖drawRect方法,你可以在此自定义绘画和动画,随意绘制自己想要的图像,矩形,长方形,边框圆,填充圆,无边框,弧线,椭圆,画贝塞尔曲线
这个是关于drawRect的解释,不会的可以看看哈
iOS下用drawRect进行基本的视图绘制,使用object-C。
setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。 宗上所诉,setNeedsDisplay...
1.2、当手指接触屏幕时,调用重写的 touchesBegan:withEvent方法(在touchesBegan里调用setNeedsDisplay,这样就会自动调用drawRect方法)。 1.3、当手指在屏幕上滑动时,调用重写的touchesEnded:withEvent方法。 ...
IOS中drawRect方法的使用, 在需要重绘的时调用setNeedsDisplay方法
在iOS中,利用UIView绘图,重写UIView的drawRect方法,点用setNeedsDisplay方法系统会自动调用drawRect完成绘图。(北京智美方成网络科技有限公司面试题), 详细说明: https://a3.work/a/oc/106.html
drawrect中实现橡皮擦功能(非背景色填充)
qt
// You may want to switch the drawrect block of the view at runtime...- (void)updateBlockChoiceFromSegmentedController{ BMDrawRectBlock firstBlock = ^(CGRect rect) { CGContextRef ctx = ...
一、画直线 代码: 代码如下: ...// 当自定义view第一次显示出来的时候就会调用drawRect方法 – (void)drawRect:(CGRect)rect { // 1.取得和当前视图相关联的图形上下文(因为图形上下文决定绘制的输出目标
基于c++的可旋转的矩形及usb相机的采集图像
// 自动调用drawRect方法,这样可以拿到 UIGraphicsGetCurrentContext,就可以画画 [self.magnifyView setNeedsDisplay]; } 在移动方法中 设置其放大点 目的让其跟随手指进行移动 (void)touchesMoved:(NSSet *)...
使用 drawRect 方法自定义注释视图 —— 这是使用自定义drawRect方法的自定义MKAnnotationView子类的演示。 这在。 这仅用于说明目的。 在 Xcode 6.3 中为 iOS 8.3 开发。 UIAlertController警报的使用,这也应该...
用drawRect实现了一个图形验证码。喜欢的小伙伴github上star一个,持续关注哦~ github: https://github.com/shenAlexy/GraphCodeView csdn博客地址:http://blog.csdn.net/shenguanhua 个人微信公众号: ...
draw rect实现的圆形进度条。可以使用部分圆弧当做整个进度条,并可以随意设置起始角度及减少的圆弧角度大小