gpt4 book ai didi

ios - 使用 swift 在屏幕上拖动图像

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:43 27 4
gpt4 key购买 nike

这个方法我试过

@IBAction func handlePan(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)
}

它正在工作,但问题是当我在多个图像上使用此方法时会产生一些问题,例如,当拖动一个图像并更改其位置但是当我单击并拖动第二个图像时。我的第一张图片回到原来的位置。这是我从 ScrollView 中获取的图像:当我点击第二张图片时,第一张图片也回到原来的位置

enter image description here

我把一张图片拖到这里没问题

enter image description here

最佳答案

class DraggableImageView: UIImageView {


var dragStartPositionRelativeToCenter : CGPoint?

override init(image: UIImage!) {
super.init(image: image)

self.userInteractionEnabled = true //< w00000t!!!1

addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "handlePan:"))

layer.shadowColor = UIColor.blackColor().CGColor
layer.shadowOffset = CGSize(width: 0, height: 3)
layer.shadowOpacity = 0.5
layer.shadowRadius = 2
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func handlePan(nizer: UIPanGestureRecognizer!) {
if nizer.state == UIGestureRecognizerState.Began {
let locationInView = nizer.locationInView(superview)
dragStartPositionRelativeToCenter = CGPoint(x: locationInView.x - center.x, y: locationInView.y - center.y)

layer.shadowOffset = CGSize(width: 0, height: 20)
layer.shadowOpacity = 0.3
layer.shadowRadius = 6

return
}

if nizer.state == UIGestureRecognizerState.Ended {
dragStartPositionRelativeToCenter = nil

layer.shadowOffset = CGSize(width: 0, height: 3)
layer.shadowOpacity = 0.5
layer.shadowRadius = 2

return
}

let locationInView = nizer.locationInView(superview)

UIView.animateWithDuration(0.1) {
self.center = CGPoint(x: locationInView.x - self.dragStartPositionRelativeToCenter!.x,
y: locationInView.y - self.dragStartPositionRelativeToCenter!.y)
}
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}
*/
}

关于ios - 使用 swift 在屏幕上拖动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33316965/

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