我有一个可以平移的视图(鸡),应该在释放时返回原来的位置。现在,当panGesture结束时,鸡只会消失。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
// record original Position
originalChickenPosition = chicken.center
print(originalChickenPosition) // works fine
view.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "handlePan:"))
}
func handlePan(panGesture: UIPanGestureRecognizer){
switch panGesture.state{
case .Began:
// start flying
case .Changed:
// follow the pan
let dCenter = panGesture.translationInView(view)
chicken.center = CGPointMake(chicken.center.x + dCenter.x, chicken.center.y + dCenter.y)
panGesture.setTranslation(CGPointZero, inView: view)
case .Ended:
// fly back
if originalChickenPosition != nil{
chicken.center = originalChickenPosition!
}
default: break
}
}
我发现了这个:Returning view to original position after pan gesture, swift但它似乎是一个不同的问题,如果我的观点会跳回来,我会很高兴。
任何有关建议的建议。
答案 0 :(得分:3)
应该为视图设置自动布局。 如果是,则确保在设置原始位置后更新约束。
import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
import java.awt.event.*;
public class Shapes
{
ArrayList <int[]> blocks = new ArrayList <int[]>();
int[] arr;
int w,x,y,z;
public void draw(Graphics gc) {
gc.setColor(Color.black);
blocks();
for(int i=0; i<blocks.size()-1; i++){
w=blocks.get(i)[0];
x=blocks.get(i)[1];
y=blocks.get(i)[2];
z=blocks.get(i)[3];
gc.fillRect(w, x, y, z);
}
}
public void blocks() {
popBlocks(100,500,300,30);
popBlocks(300,400,150,30);
popBlocks(500,300,150,30);
popBlocks(700,200,150,30);
popBlocks(900,100,150,30);
}
private void popBlocks(int a, int b, int c, int d) {
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
blocks.add(arr);
}
}