UILongPressureRecognizer with Image view

时间:2015-06-18 10:41:21

标签: ios swift uiimageview uigesturerecognizer uilongpressgesturerecogni

大家早上好,

我是一名新手Swift开发人员,我正面临着实施我正在处理的练习的以下问题。

我有一个集合视图,其中集合单元格显示我在XCODE中导入的图像;当我用手指在屏幕上点击时,我想将当前显示的图像替换为我也导入的另一个图像,并为此替换设置动画。

我正在实现UITapLongPressureRecognizer方法,但我对识别器要实现的状态感到困惑,只是在我点击屏幕上下滚动时将第一个图像视图替换为我想要显示的图像视图。 / p>

从下面的代码可以看出,我认为应该更合适的两个识别器是" Begin"和"结束"。 我的问题是,当状态 .Begin 开始时,我不知道如何用另一个图像视图替换一个图像视图的动画,所以当状态是 .Ended 时我不知道如何用第一个图像替换第二个图像并为替换设置动画(我希望它就像一个带有&#34的模态segue;交叉溶解"过渡)。

提前感谢您的善意和耐心。

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("")
    }
}

1 个答案:

答案 0 :(得分:0)

首先,我建议您使用UITapGestureRecognizer而不是长按。因为,据我所知,你只需点击一次而不是按压一段时间。

let tapRecognizer = UITapGestureRecognizer(target: self, action:Selector("tapped:"))
collectionView.addGestureRecognizer(tapRecognizer)

当用户点击时,您可以使用UIView动画来更改图像。您可以从以下链接查看示例II,以了解有关动画的信息。 http://www.appcoda.com/view-animation-in-swift/