Iphone drawRect和setNeedsDisplay永远不会被调用
我添加了一个uiview(带有uimageview的holderview)作为子视图,并使用 imageview=[[UIImageView alloc]initWithFrame:[holderView frame]]; [imageview setImage:cppobject->OutputImage]; imageview.contentMode=UIViewContentModeScaleAspectFitIphone drawRect和setNeedsDisplay永远不会被调用,iphone,ipad,uigesturerecognizer,Iphone,Ipad,Uigesturerecognizer,我添加了一个uiview(带有uimageview的holderview)作为子视图,并使用 imageview=[[UIImageView alloc]initWithFrame:[holderView frame]]; [imageview setImage:cppobject->OutputImage]; imageview.contentMode=UIViewContentModeScaleAspectFit [holderView addSubview:imageview]; hold
[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];
然后在装甲识别器功能(移动)中,我想使用
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(@“已输入绘制矩形”)
if(测量){
[[UIColor redColor]设置行程];
UIBezierPath*pathToDraw=[UIBezierPath bezierPath];
对于(int n=1;n<[点数]-1;n++){
NSValue*value=[点对象索引:(NSInteger)n];
CGPoint point=[value CGPointValue];
[路径绘制移动点:点];
值=[点对象索引:(NSInteger)n+1];
点=[value CGPointValue];
[pathToDraw addLineToPoint:point];
}
[路径绘制笔划];
}
}
问题是[holderView setNeedsDisplay];决不要调用或激发drawRect任何建议或帮助,因为您需要将UIView子类化,并在子类中实现drawRect
然后在创建holderview时,确保实例化的是子类UIView,而不是默认UIView。您需要子类UIView并在子类中实现drawRect 然后在创建holderview时,确保实例化的是子类UIView,而不是默认UIView
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];
}