大家,早安,
我是一名新手 Swift 开发人员,在实施我正在处理的练习时,我面临以下问题。
我有一个集合视图,其中集合单元格显示我在 XCODE 中导入的图像;当我用手指在屏幕上点击时,我想用另一个我也导入的图像替换当前显示的图像,并为这个替换设置动画。
我正在实现 UITapLongPressureRecognizer 方法,但我对要为识别器实现哪个状态感到困惑,只是为了用我想要在点击屏幕上下滚动时显示的图像视图替换第一个图像视图。
正如您从下面的代码中看到的那样,我认为更适合实现的两个识别器是“开始”和“结束”。我的问题是,当状态.Begin开始时,我不知道如何用另一个图像视图替换一个图像视图,因此当状态为.Ended时,我不知道如何用第一个图像替换第二个图像,并且为替换设置动画(我希望它类似于带有“Cross Dissolve”过渡的模态转场)。
预先感谢您的善意和耐心。
class MainViewController: UICollectionViewController {
var fashionArray = [Fashion]()
private var selectedIndexPath: NSIndexPath?
override func viewDidLoad() {
super.viewDidLoad()
selectedIndexPath = NSIndexPath()
//Register the cell
let collectionViewCellNIB = UINib(nibName: "CollectionViewCell", bundle: nil)
self.collectionView!.registerNib(collectionViewCellNIB, forCellWithReuseIdentifier: reuseIdentifier)
//Configure the size of the image according to the device size
let layout = collectionViewLayout as! UICollectionViewFlowLayout
let bounds = UIScreen.mainScreen().bounds
let width = bounds.size.width
let height = bounds.size.height
layout.itemSize = CGSize(width: width, height: height)
let longPressRecogn = UILongPressGestureRecognizer(target: self, action: "handleLongPress:")
collectionView!.addGestureRecognizer(longPressRecogn)
}
func handleLongPress(recognizer: UILongPressGestureRecognizer){
var cell: CollectionViewCell!
let location = recognizer.locationInView(collectionView)
let indexPath = collectionView!.indexPathForItemAtPoint(location)
if let indexPath = indexPath {
cell = collectionView!.cellForItemAtIndexPath(indexPath) as! CollectionViewCell
}
switch recognizer.state {
case .Began:
cell.screenTapped = false
case .Ended:
cell.screenTapped = false
default:
println("")
}
}