【发布时间】:2017-11-04 03:48:10
【问题描述】:
我希望能够将UIImageView 的实例从UIScrollView 移动到包含UIScrollView 之外的UIView。
我已经让panGesture 工作,但UIImageView 在被拖动时仅显示在包含UIScrollView 内,如果超出包含UIScrollView 则隐藏,如屏幕截图所示。
我尝试过类似someScrollView.sendSubview(toBack: self.view) 的方法来设置图层顺序以及imageView.layer.zIndex = ..,但它似乎不适用于我的情况。
如何实现屏幕截图中显示的内容,以便可以将其拖动到包含视图之外的目标UIView?
如果可能的话,如何在 panGesture 开始时创建 UIImageView 的新实例,以便保留原始图像。
@IBOutlet weak var someScrollView: UIScrollView!
var letters: [String] = ["g","n","d"]
override func viewDidLoad() {
super.viewDidLoad()
someScrollView.addSubview(createLetters(letters))
someScrollView.sendSubview(toBack: self.view)
}
func createLetters(_ named: String]) -> [UIImageView] {
return named.map { name in
let letterImage = UIImageView()
letterImage.image = UIImage(named: "\(name)")
addPanGesture(image: letterImage)
return letterImage
}
}
func addPanGesture(image: UIImageView) {
let pan = UIPanGestureRecognizer(target: self, action: #selector(ViewController.handlePan(sender:)))
image.addGestureRecognizer(pan)
}
@objc func handlePan(sender: UIPanGestureRecognizer) {
let translation = sender.translation(in: view)
if let imageView = sender.view {
imageView.center = CGPoint(x:imageView.center.x + translation.x,
y:imageView.center.y + translation.y)
}
sender.setTranslation(CGPoint.zero, in: self.view)
switch sender.state {
case .began:
...
}
}
【问题讨论】:
标签: ios uiscrollview uiimageview swift4 uipangesturerecognizer