drawRect и setNeedsDisplay никогда не будут вызваны - PullRequest
0 голосов
/ 27 июня 2011

Я добавил uiview (держатель для просмотра, который содержит uimageview) в качестве подпредставления и присвоил ему жест, используя

imageview = [[UIImageView alloc] initWithFrame: [holderView frame]];[imageview setImage: cppobject-> OutputImage];imageview.contentMode = UIViewContentModeScaleAspectFit;

[holderView addSubview:imageview];
holderView.contentMode = UIViewContentModeScaleAspectFit ;

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
[pinchRecognizer setDelegate:self];
[holderView addGestureRecognizer:pinchRecognizer];
[pinchRecognizer release];

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];
[rotationRecognizer setDelegate:self];
[holderView addGestureRecognizer:rotationRecognizer];
[rotationRecognizer release];

panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[holderView addGestureRecognizer:panRecognizer];
holderView.tag=101;
[self.view addSubview:holderView];
[holderView sizeToFit];
[self AddInformation];
[holderView retain];
[self retain];

, затем в функции panRecognizer (перемещение) я хочу нарисовать линию, используя

         UIPanGestureRecognizer *gR = (UIPanGestureRecognizer *) sender ; 


        NSValue *value = [NSValue valueWithCGPoint: [gR locationInView:gR.view]]; 





        [Points addObject:value];


        [holderView setNeedsDisplay];

        NSLog(@"End of measuring") ; 

, и я буду использовать точки в точках, чтобы нарисовать линию выше всехподпредставления в

- (void) drawRect: (CGRect) rect {NSLog (@ "Entered Draw In Rect");

if (Measuring) {

    [[UIColor redColor] setStroke];

    UIBezierPath *pathToDraw = [UIBezierPath bezierPath]; 

    for (int n = 1; n < [Points count] - 1 ; n++) { 

    NSValue * value = [Points objectAtIndex:(NSInteger)n];

        CGPoint  point = [value CGPointValue]; 

        [pathToDraw moveToPoint:point];


        value = [Points objectAtIndex:(NSInteger)n+1];

        point = [value CGPointValue];

        [pathToDraw addLineToPoint:point];



    }



    [pathToDraw stroke];







}

}

проблема заключается в[holderView setNeedsDisplay];никогда не звоните или не обращайте внимание на любые предложения или помощь относительно этого

1 Ответ

3 голосов
/ 27 июня 2011

Вам необходимо создать подкласс UIView и реализовать drawRect в подклассе.

Затем при создании holderview убедитесь, что вы создаете экземпляр UIView с подклассами, а не UIView по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...