Я пытаюсь изменить путь моего CAShapeLayer
, а затем перерисовывать его с помощью setNeedsDisplay
,setNeedsDisplay на CAShapeLayer для того, чтобы перерисовать слой
Но по какой-то причине он не будет перерисовывать. Единственный способ, которым я могу его перерисовать, - это позвонить viewDidLoad
, который, я уверен, не правильный путь.
Вот код для инициализации:
self.shape.lineWidth = 2.0;
[self.shape setFillColor:[[UIColor clearColor] CGColor]];
self.shape.strokeColor = [[UIColor blackColor] CGColor];
[self.shape setPath:[self.shapePath CGPath]];
self.shape.fillRule = kCAFillModeRemoved;
[self.cuttingView.layer addSublayer:self.shape];
И жест распознавань для жеста перетаскивания:
- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
static CGPoint lastLocation;
CGPoint location = [gesture locationInView:self.cuttingView];
if (gesture.state == UIGestureRecognizerStateBegan)
{
if (![self.shapePath containsPoint:location]) {
gesture.enabled = NO;
} else {
lastLocation = location;
}
}
if (gesture.state == UIGestureRecognizerStateChanged) {
CGAffineTransform translation = CGAffineTransformMakeTranslation((location.x - lastLocation.x), (location.y - lastLocation.y));
self.shapePath.CGPath = CGPathCreateCopyByTransformingPath(self.shapePath.CGPath, &translation);
[self.shape setNeedsDisplay];
}
gesture.enabled = YES;
}
Я печать места, и они действительно изменяются, но на экране ничего не показывает ,
Как это можно исправить?
Спасибо!