平移后返回查看原始位置

时间:2016-04-28 21:41:51

标签: ios swift uipangesturerecognizer

我有一个可以平移的视图(鸡),应该在释放时返回原来的位置。现在,当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但它似乎是一个不同的问题,如果我的观点会跳回来,我会很高兴。

任何有关建议的建议。

1 个答案:

答案 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);
    }
}
相关问题