2017-12-04 15 views
1

ここであまり言うことはありません。ちょうど、私のUIViewにSTROKEは追加されていません。drawRectを使用して私自身のUIViewに描画

#import "DrawingLayerView.h" 

@implementation DrawingLayerView 

UIBezierPath *newPath; 

- (void)startTouch:(CGPoint)point; 
{ 
    [newPath moveToPoint:point]; 
} 

- (void)drawRect:(CGRect)rect { 
    [[UIColor redColor] setStroke]; 
    [newPath stroke]; 
} 

- (void)drawShape:(CGPoint)point 
{ 
    [newPath addLineToPoint: point]; // (4) 
    [self setNeedsDisplay]; 
} 

- (void)endTouch:(CGPoint)point { 
    [newPath removeAllPoints]; 
} 

@end 

DrawingLayerView.hUIViewのカスタムクラスです。

drawRect関数は必ず呼び出されますが、ストロークは作成されていません。

詳細情報が必要な場合。ちょうど私に教えて、私はそれを取得します!

+0

ダンは言ったように、 'newPath'をグローバルと宣言しました。あなたがivarにしたい場合は、宣言の前に '{'を、宣言の後に '} 'を入れてください。または、それをプライベートクラス拡張に移動します。あるいは、それをプロパティにします(また、このプロパティを.mファイルのprivateクラス拡張に入れることで、privateプロパティになります)。 – Rob

答えて

1

少なくとも一つのことをインスタンス化するためには表示されませんすることはnewPathの初期化です。開始時にtouch:self.newPath = [UIBezierPath bezierPath];(self.newPathを使用するプロパティにします。そうでない場合は、静的に静的と宣言します)。

0

drawShapeに電話する方法/場所を表示したい場合があります。それを呼び出すものは何もありません。また、あなたがそれをやっていると仮定すると、あなたがこれまでの仕事へのコードのために必要なUIBezierPath、例えば:

- (void)startTouch:(CGPoint)point   // note, no semicolon 
{ 
    newPath = [UIBezierPath bezierPath]; // note, create a `UIBezierPath` before you try to `moveToPoint`, or later, `addLineToPoint` 
    [newPath moveToPoint:point]; 
} 
関連する問題