我是iOS編程的初學者,很抱歉如果我的問題是一個愚蠢的問題。UIView子類:drawRect不叫
我想做一個應用程序執行加載的圖像自定義繪圖。
要做到這一點,我發現一個解決方案是子類UIView
和編輯drawRect
方法。
我在以下代碼中激活了IBAction
,該代碼鏈接到Interface Builder故事板文件中的按鈕。
UIImageView *image = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"SampleImage.jpg"]];
image.frame = previewView.frame;
[image setContentMode:UIViewContentModeScaleAspectFit];
[previewView addSubview:image];
customView *aCustomView = [[customView alloc] initWithFrame: CGRectMake(image.bounds.origin.x, image.bounds.origin.y, image.bounds.size.width, image.bounds.size.height)];
[previewView addSubview:aCustomView];
customView
是UIView
子類,我創建的,其init
和drawRect
方法是這樣設置:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
NSLog(@"INITIALIZING");
if (self) {
// Initialization code
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
NSLog(@"DRAWING");
CGContextClearRect(ctx, rect);
CGContextSetRGBFillColor(ctx, 0, 255, 0, 0.3);
CGContextFillEllipseInRect(ctx, rect);
CGContextSetRGBStrokeColor(ctx, 255, 0, 0, 1);
CGContextSetLineWidth(ctx, 2);
CGContextStrokeEllipseInRect(ctx, rect);
}
,我有是沒有描圖和NSLog
我有問題「初始化」消息,但不是「繪圖」圖紙。
所以基本上它使得initWithFrame
,但它不叫drawRect
方法。
請問我能指出我做錯了什麼?
謝謝,通過放置NSLog,我發現調用drawRect方法時出現錯誤。通過添加[previewView setNeedDisplay]方法被調用,但不是當我期望它完成時。我的意思是,通過以下代碼步驟,[previewView setNeedDisplay]行的執行不會使自定義繪圖出現,而是以某種方式出現。我想了解在哪一刻drawRect方法被調用,但無論如何,最初的問題得到解決,謝謝:) – Dobrodeveloper 2012-04-14 15:37:39