2011-06-27 113 views
0

我添加使用的drawRect和setNeedsDisplay不会被调用

imageview的=(携带uimageview holderview)一个UIView作为子视图和ASIGN手势它[[ALLOC的UIImageView] initWithFrame:方法[holderView帧]]; [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") ; 

画线,我会使用积分在积分画线的所有子视图上面

- (空)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];永远不要打电话或着火drawRect有关的任何建议或帮助

回答

3

您需要继承UIView并在子类中实现drawRect。

然后当创建holderview时,确保你正在实例化你的子类UIView而不是默认的UIView。

相关问题