0

UIView のコード ファイルで、ストーリーボードのビューのカスタム クラスを設定しました。しかし、アプリを実行してビューが読み込まれると、何も起こりませんか? NSLogs を取得できません。画面に何も描画されませんか? 私が間違っていることを誰かが知っていますか?何かを適切に無効化していませんか?

UIView の私のコード:

- (id)initWithFrame:(CGRect)frame
{
    NSLog(@"Drawling area loaded");
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}


- (void)drawRect:(CGRect)rect
{

    CGPoint dotOne = CGPointMake(1, 1);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotOne]];

    CGPoint dotTwo = CGPointMake(10, 10);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotTwo]];

    CGPoint dotThree = CGPointMake(100, 100);
    [squareLocations addObject:[NSValue valueWithCGPoint:dotThree]];


    int numby = [squareLocations count];

    for (int i = 0; i < numby; i++)
    {
        NSValue *pointLocation = [squareLocations objectAtIndex:i];
        CGPoint tmpPoint = [pointLocation CGPointValue];

        CGRect tmpRect = CGRectMake(tmpPoint.x, tmpPoint.y, 10, 10);

        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetLineWidth(context, 5.0);
        CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
        CGFloat components[] = {0.0, 0.0, 1.0, 1.0};
        CGColorRef color = CGColorCreate(colorspace, components);
        CGContextSetStrokeColorWithColor(context, color);
        CGContextMoveToPoint(context, tmpPoint.x, tmpPoint.y);
        CGContextAddLineToPoint(context, 300, 400);
        CGContextStrokePath(context);

    }
}


@end
4

2 に答える 2

1

squareLocationsメソッドでivarがnilでないことを確認するには、デバッガーを使用する必要があると思いますdrawRect:エラーなしでnilにメッセージを送信でき、実際にはobjective-cで何もしません。また、メソッドでsquareLocationsivar を初期化するとdrawRect:、問題を解決できます。

于 2013-03-14T17:36:50.527 に答える
0

このコードを追加してみてください:

- (void)setup{
    self.contentMode=UIViewContentModeRedraw;
}
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setup];
    }
    return self;
}
- (void)awakeFromNib{
    [self setup];
}
于 2013-03-16T04:27:11.947 に答える