UIViewをサブクラス化してdrawRectを実装しました。私は基本的に、このUIViewのプロパティであるCGPointを設定した後、このdrawRectを呼び出すようにします。これはどうすればいいですか?UIViewサブクラスでdrawRectを呼び出す
私はこれのUIViewのポイントを設定していると私は私の他のUIViewControllerでのdrawRectを呼び出す好き-(id) initWithCoder:(NSCoder *)aDecoder
{
if(self = [super initWithCoder:aDecoder]) {
point_.x = 0;
self.page_ = [UIImage imageNamed:@"pages"];
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
if (point_.x != 0){
[self.page_ drawInRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 1.0f);
CGContextMoveToPoint(context, 40, point_.y);
CGContextAddLineToPoint(context, 420, point_.y);
CGContextStrokePath(context);
}
}
は、次のとおりです:
:self.page_.point_ = CGPointMake(-100, self.title_.frameHeight + self.title_.frameX + 40);
[self.page_ drawRect:self.page_.frame];
それは私にこれらのエラーの全てを与えるここに私のコードです
<Error>: CGContextSaveGState: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextSetBlendMode: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextSetAlpha: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextTranslateCTM: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextScaleCTM: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextDrawImage: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextRestoreGState: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextSetStrokeColorWithColor: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextSetLineWidth: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextMoveToPoint: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextAddLineToPoint: invalid context 0x0
Feb 22 20:24:38 <Error>: CGContextDrawPath: invalid context 0x0
これはなぜですか?
'point_'の値が実際に変更された場合、' point_'プロパティセッターが 'setNeedsDisplay'を呼び出す方が良いでしょう。 –
aha..thatはいいアイデアです。setteerではsetNeedsDisplayを呼び出します。なぜこれが良いのかを説明する心ですか? – adit