Restrict dragging of a label out of its superView ios swift -
i have uiimageview inside of there label text have move on pan gesture. though able drag test having problem in restricting movement of text within image view. below code restricting movement in x direction whenever try implement similar approach y direction 2 conditions arise @ corner creates problem. there better approach please help.
func dragtext(sender: uipangesturerecognizer) { let translation = sender.translationinview(self.view) print(translation) switch sender.state { case .changed: self.textlabeloriginx = (sender.view?.frame.origin.x)! if self.textlabeloriginx <= 10 { sender.view?.center = cgpointmake(sender.view!.center.x + 0.1, sender.view!.center.y + translation.y) } else if ((sender.view?.frame.origin.x)! + sender.view!.frame.width >= sender.view?.superview?.bounds.width) { sender.view?.center = cgpointmake(sender.view!.center.x - 0.1, sender.view!.center.y + translation.y) } else { sender.view?.center = cgpointmake(sender.view!.center.x + translation.x, sender.view!.center.y + translation.y) } sender.settranslation(cgpointzero, inview: self.view) default: break } }
core graphics has lot of functions check whether rect inside or outside particular frame, union, intersection etc.
in .changed can check if translation want apply moving view contained inside specific rect or not.
bool cgrectcontainsrect ( cgrect rect1, cgrect rect2 );
Comments
Post a Comment