2015-12-18 68 views
3

我有一个垂直线(UIView),需要调整其大小。我目前使用捏手势来做,但现在我需要使用滑动手势来做,并从我滑过的一侧增加或减少高度。例如,如果我从行的顶端向下滑动,行必须从顶部减小大小。底部必须保持固定在原始位置。 我该怎么做?使用UIPanGestureRecognizer仅调整UIView的大小

我还需要能够移动图像,我已经使用UIPanGestureRecognizer实现了该图像。

这是我玩过的: 我在垂直线的顶端有一个小的UIView,线的底端有一个。我用这些作为标记。现在,我可以上下移动顶部标记。我需要将线条调整到两个标记之间的距离,并将线条的底端保持在与底部标记相同的位置。

这是我

func draggedViewForTopMarker(sender: UIPanGestureRecognizer) { 
     //To move the top marker 
     var translation = sender.translationInView(self.view) 
     sender.view!.center = CGPointMake(sender.view!.center.x, sender.view!.center.y + translation.y) 
     sender.setTranslation(CGPointZero, inView: self.view) 
     //Find distance between the markers 
     var distanceBetweenMarkers = (sender.view!.center.y + translation.y) - self.bottomMarker.center.y 
     print(distanceBetweenMarkers) 
     if (distanceBetweenMarkers < 0) { 
      distanceBetweenMarkers = distanceBetweenMarkers*(-1) 
     } 
     //**TRYING** to resize the line to have the same height as the distance between the two markers AND make sure its positioned between the markers and the bottom end of the line is still in the same place as it was originally. 
     var newFrame = CGRectMake(sender.view!.center.x, distanceBetweenMarkers/2, vertical.frame.width, distanceBetweenMarkers) 
     vertical.frame = newFrame 
    } 

我打开不同的方法也一样,或者我有这种方法的问题的解决方案!

您可以在App Store上的Photo Measures Lite上查看,以更好地理解我说“仅从一侧调整线条大小”的含义。

非常感谢!

回答

0

而不是使一个新的帧可以只调整线条的y位置是一样的顶部标记,并且高度是一样的两个标记

func draggedViewForTopMarker(sender: UIPanGestureRecognizer) { 
    //To move the top marker 
    var translation = sender.translationInView(self.view) 
    sender.view!.center = CGPointMake(sender.view!.center.x, sender.view!.center.y + translation.y) 
    sender.setTranslation(CGPointZero, inView: self.view) 
    //Find distance between the markers 
    var distanceBetweenMarkers = self.topMarker.frame.origin.y - self.bottomMarker.frame.origin.y 
vertical.frame.origin.y = self.topMarker.frame.origin.y 
vertical.frame.size.height = distanceBetweenMarkers 
} 

但是之间的距离这只有在两个标记和垂直线是同一个超视图的子视图时才起作用