我希望能够拖动屏幕上的对象,但它们不会。我试了所有方法,但仍然不能。
下面是代码。
func panGesture(gesture: UIPanGestureRecognizer) {
switch gesture.state {
case .began:
print("Began.")
for i in 0..<forms.count {
if forms[i].frame.contains(gesture.location(in: view)) {
gravity.removeItem(forms[i])
}
}
case .changed:
let translation = gesture.translation(in: forms[1])
gesture.view!.center = CGPoint(x: gesture.view!.center.x + translation.x, y: gesture.view!.center.y + translation.y)
gesture.setTranslation(CGPoint.zero, in: self.view)
print("\(gesture.view!.center.x)=\(gesture.view!.center.y)")
print("t;: \(translation)")
case .ended:
for i in 0..<forms.count {
if forms[i].frame.contains(gesture.location(in: view)) {
gravity.addItem(forms[i])
}
}
print("Ended.")
case .cancelled:
print("Cancelled")
default:
print("Default")
}
}
它们也有重力。形状是正方形和圆形。
说明:in. begin-我禁用所选表格的重力。in. changed-我尝试更改坐标。in. end-我再次启用重力。
截图。
4条答案
按热度按时间aiqt4smr1#
步骤1:选择一个视图,将其拖到故事板中。
**步骤2:**添加PanGesture。
**步骤3:**在ViewDidLoad中添加以下代码。
**步骤4:**draggedView的代码。
**步骤5:**输出。
pvabu6sv2#
一月一日
希望这能对人有所帮助。
ecr0jaav3#
如果你子类化一个视图,这是非常容易的:
可拖动视图...
1.将UIView拖放到场景中。
1.通常,从左侧(即x位置)添加约束,从顶部(即y位置)添加约束。
1.在故事板中,只需简单地命名约束"fromleft"和"fromtop"
你完了。
它现在工作得很好-就是这样。
那个方便的
constraint(
调用是什么?请注意,视图只是通过名称找到自己的约束。
在Xcode中,仍然没有办法使用IBOutlets这样的约束。幸运的是,通过"标识符"找到它们非常容易。(事实上,这正是
.identifier
特性在约束上的用途。)尖端...边缘对中心!
不要忘记在视图上设置约束(如上图所示):
您可以将左边的设置为:
根据你的情况选择一个合适的。它会让你更容易计算,设置滑块等。
脚注-"初始化" UI视图、UI "I"视图、
rdrgkggo4#
此UIView扩展使UIView对象可拖动,并将移动限制在屏幕范围内。