Sto cercando di ottenere quanto segue: L'utente tocca una vista, una circolare visualizza a sinistra di esso con alcuni contenuti di immagine in esso. La vista dovrebbe animare a partire dal punto di tocco fino alla cornice finale che si trova all'esterno della vista toccata ea sinistra. Durante l'animazione che dovrebbe essere un cerchio, crescendo nella giusta posizione e le dimensioniAnimazione di UIView mascherato, CALayer
Tutto funziona bene con il codice qui sotto, solo che durante l'animazione, confine circolare è solo sulla sinistra. È come se la forma CALayer
scivoli nella sua cornice finale.
Sembra un po 'come questo.
Una volta completata l'animazione, ho il cerchio completo come previsto.
CGFloat w = 300;
CGRect frame = CGRectMake(myX, myY, w, w);
CGPoint p = [touch locationInView:self.imageView];
CGRect initialFrame = CGRectMake(p.x, p.y, 0,0);
UIImageView *circle = [[UIImageView alloc] initWithFrame:frame];
circle.image = [UIImage imageNamed:@"china"];
circle.contentMode = UIViewContentModeScaleAspectFill;
circle.backgroundColor = [UIColor clearColor];
circle.layer.borderWidth = 1;
circle.layer.borderColor = [UIColor grayColor].CGColor;
circle.layer.masksToBounds = YES;
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGRect maskRect = CGRectMake(0, 0, w, w);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, nil, maskRect);
maskLayer.path = path;
CGPathRelease(path);
circle.layer.mask = maskLayer;
circle.frame = initialFrame;
[self.imageView addSubview:circle];
[UIView animateWithDuration:1.0 animations:^{
circle.frame = frame;
}];
Ho provato solo lavorando con la cornerRadius
del CALayer
, ma che non porta a risultati soddisfacenti sia, come il raggio dovrebbe cambiare la dimensione del frame pure.
Brillante! Grazie in particolare per lo sforzo di documentazione. Questa è una spiegazione grande e attuabile. Ora lavoro come previsto. – Mundi