2015-12-18 70 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 
} 

但是之間的距離這隻有在兩個標記和垂直線是同一個超視圖的子視圖時才起作用