2011-06-27 112 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。

相關問題