我对iOS开发很新。但拥有多年的编程经验。 无论如何,我很难找到解决问题的方法。
在我的应用程序中,我根据服务器的数据渲染彩色圆圈行。 这些圈子中的每一个都在服务器上设置了不同的属性。 其中之一是"偏移"属性。 这应该用于渲染与其左边兄弟相距一定距离的圆,或者如果它是第一个,则为父视图的起点。
然后,也可以通过向右或向左拖动来移动每个圆圈。但是从它的左边兄弟那里来的永远不会少于0。
在android中这很容易,只需在拖动时设置左边距,一切都很好。
但是在xcode中我很难搞清楚如何完成这项工作。
我确信我的这种方式对经验不足。所以我希望对swift有更多了解的人可以帮助我。
下面是一些图片,以明确我希望得到什么。
First render where one circle has an offset
The gesture where the 3. last circle is drages to the right
我需要这个无缝移动,所以在手势结束后不要再进行再次移植,而是用手指移动。 正如你所看到的那样,那个正在徘徊的圆圈,保持它们与被移动的相对位置。
谢谢。
答案 0 :(得分:0)
有几种方法可以做到这一点。第一种可能的解决方案是使用滑动手势来移动对象。
override func viewDidLoad() {
super.viewDidLoad()
let swipeGesture = UISwipeGestureRecognizer(target: self, action: "handleSwipe:")
swipeGesture.direction = [.Down, .Up]
self.view.addGestureRecognizer(swipeGesture)
}
func handleSwipe(sender: UISwipeGestureRecognizer) {
print(sender.direction)
}
使用这些手势可以用手指沿着物体移动,您可以根据需要使用.left
和.right
手势。
拖动组件的第二个解决方案可以是Pan Gesture
func detectPan(recognizer:UIPanGestureRecognizer) {
var translation = recognizer.translationInView(self.superview!)
self.center = CGPointMake(lastLocation.x + translation.x, lastLocation.y + translation.y)
}
转换变量在平移时检测视图的新坐标。将根据更改的坐标调整视图的中心。
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
// Promote the touched view
self.superview?.bringSubviewToFront(self)
// Remember original location
lastLocation = self.center
}
单击视图时,当前视图将显示在其他视图的前面,视图的中心将分配给lastlocation变量
希望这会有所帮助。