gpt4 book ai didi

ios - 将 UIImageView 拖放到另一个 UIImageView 中

转载 作者:行者123 更新时间:2023-11-30 13:12:32 25 4
gpt4 key购买 nike

我有一个 UIScrollView,其中包含 n 个占位符 UIImageView。下面我有一个 StackView,其中包含 10 个图像,用户可以从中选择并将图像拖动到上面的特定占位符 ImageView 。我已经实现了 PanGesture 并且工作正常,但是,我正在努力解决如何检测可拖动图像何时位于占位符图像的范围内。特别是因为它处于 ScrollView 中。我能够得到一些与可拖动 View 的 center.X 和 center.Y 一起使用的东西,然后根据占位符的相对值检查这些值,但它没有按预期工作。从我所看到的,拖动的 X 和 Y 坐标仅适用于实际的父 UIView。因此,当将图像拖入 ScrollView 时,X 值不一定对齐,如果列表很长,其中一些占位符图像的 X 坐标可能会超过 2000。看看下面的代码,让我知道您的想法和建议。谢谢!

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
let translation = recognizer.translationInView(self.view)

if recognizer.state == UIGestureRecognizerState.Began {
originalViewLocation = recognizer.view!.center
}else if recognizer.state == UIGestureRecognizerState.Ended {
for placeHolderView in playerImages{
if ((recognizer.view!.center.x < (placeHolderView.center.x + (placeHolderView.frame.width / 2)) && recognizer.view!.center.x > placeHolderView.frame.origin.x)){
if recognizer.view!.center.y < (stackView.center.y + stackView.frame.height / 2){
let chosenImage = recognizer.view! as! UIImageView
placeHolderView.image = chosenImage.image
}
}else{
UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: {
recognizer.view!.center = self.originalViewLocation
}, completion: { finished in
})
}
}
}
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)
print("X: \(recognizer.view!.center.x)")
print("Y: \(recognizer.view!.center.y)")
}

playerImages 数组存储 ScrollView 中的 UIImageViews。

最佳答案

好吧,我自己解决了这个问题。它与相对坐标值与实际坐标值有关。

我最终需要一些东西......

CGRectContainsPoint()

检查目标占位符 View 的框架是否包含拖动 View 的中心点。

还有...

convertRect()

convertPoint()

我必须将拖动点的坐标值转换为 super View 的值。同时,将 ScrollView 中占位符 View 的帧值转换为相同的( super View 值)。就像这样...

let convertedCenter = recognizer.view!.superview!.convertPoint(recognizer.view!.center, toView: self.view)
let convertedFrame = self.view.convertRect(IV.frame,fromView: IV.superview)
if CGRectContainsPoint(convertedFrame, convertedCenter) {
//Replace placeholder image with dragged image.
}

希望这对其他人有帮助。

关于ios - 将 UIImageView 拖放到另一个 UIImageView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com