Ho una sottoclasse UIView che voglio poter spostare all'interno della sua superview. Quando l'utente tocca l'UIView da qualche parte fuori dallo self.center
ma entro self.bounds
"salta" perché aggiungo la nuova posizione a self.center
per raggiungere lo spostamento effettivo. Per evitare questo comportamento, sto cercando di impostare un punto di ancoraggio che consenta all'utente di afferrare e trascinare la vista in qualsiasi punto all'interno dei suoi limiti.Impostazione del punto di ancoraggio per il livello UIView
Il mio problema è che quando calcolo il nuovo punto di ancoraggio (come mostrato nel codice seguente) non accade nulla, la vista non cambia affatto posizione. D'altra parte, se imposto il punto di ancoraggio su un punto precalcolato, posso spostare la vista (ma poi ovviamente "salta" al punto precalcolato). Come mai questo non funziona come previsto?
Grazie.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
// Only support single touches, anyObject retrieves only one touch
UITouch *touch = [touches anyObject];
CGPoint locationInView = [touch locationInView:self];
// New location is somewhere within the superview
CGPoint locationInSuperview = [touch locationInView:self.superview];
// Set an anchorpoint that acts as starting point for the move
// Doesn't work!
self.layer.anchorPoint = CGPointMake(locationInView.x/self.bounds.size.width, locationInView.y/self.bounds.size.height);
// Does work!
self.layer.anchorPoint = CGPointMake(0.01, 0.0181818);
// Move to new location
self.center = locationInSuperview;
}
assicurati di avere piena conoscenza di anchorPoint: http://stackoverflow.com/a/22188420/550393 – 2cupsOfTech