使用 UIPanGestureRecognizer 移动后保存并选择 UIImageView。迅速

Posted

技术标签:

【中文标题】使用 UIPanGestureRecognizer 移动后保存并选择 UIImageView。迅速【英文标题】:Save and segue UIImageView after moving with UIPanGestureRecognizer. Swift 【发布时间】:2015-05-06 10:22:28 【问题描述】:

美好的一天。

这是我最后的选择——在这里提问。

问题是:我正在构建多视图应用程序。在第一个屏幕上,我有 UIImageView 可以使用 UIPanGestureRecognizer 函数移动:

@IBAction func movement(recognizer: UIPanGestureRecognizer) 

    let translation = recognizer.translationInView(self.view)

    if let view = recognizer.view 

        view.center = CGPoint(x:view.center.x + translation.x, y:view.center.y + translation.y)

    

    recognizer.setTranslation(CGPointZero, inView: self.view)

这是移动东西的常用代码,我在raywenderlich.com 获取了

所以我想要的是在与 UIImageView 元素交互之后和 segue 之后保存它的位置。

我相信我需要从这个函数中返回 CGPoint 并像这样继续它:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
        if segue.identifier == "showPlaylistDetail" 
            let playlistDetailController = segue.destinationViewController as! PlaylistDetailViewController

playlistDetailController.image2.center = image1.center

        
    

所以我的问题是:

    我是否使用正确的代码通过平移手势识别器移动对象?

    你会如何从这个函数返回CGPoint,你会如何读取它?

    如何保存 UIImageView 在 segue 过程中及之后的位置?

嗯...这个小虫子要了我的命。我敢打赌,这很容易解决,但就我初学者而言,我不知道如何解决:(

【问题讨论】:

【参考方案1】:

根据您的描述,有几种解决方案,我会的。

firstViewController 中维护一个属性currentCenter

var currentCenter:CGPoint

在方法movement中设置view.center后添加以下行

currentCenter.x = view.center.x
currentCenter.y = view.center.y

然后像你说的那样prepareForSegue

希望这种方法有所帮助!

【讨论】:

感谢您的回答。但这似乎不对。正如我从这个答案 (***.com/questions/24014800/…) 中得到的,Swift 中没有 @property。那么你建议使用全局变量吗? 是的,如果你有一个imageView你正在移动,你可以直接传递thatImageView.center 它不起作用。在 segue 开始后,图像会回到它的初始位置。 您需要使用相同的方法。在第二个视图控制器中声明一个变量。在您的prepareForSegue 中将currentCenter 分配给该变量。并在第二个视图控制器的viewDidLoad 中将变量分配给imageview.center

以上是关于使用 UIPanGestureRecognizer 移动后保存并选择 UIImageView。迅速的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 UIPanGestureRecognizer 移动对象时会有延迟?

UIPanGestureRecognizer ***视图未获取事件,子视图使用它们

在 UITableView 上滑动删除以使用 UIPanGestureRecognizer

在 UIPanGestureRecognizer 中使用velocityInView

使用 UIPanGestureRecognizer 拖动 + 旋转触摸下车

使用 UIPanGestureRecognizer 移动和缩放 UIView