使用 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