【问题标题】:Swift 2 - Bring selected CollectionView Cell in front of other cellsSwift 2 - 将选定的 CollectionView 单元格放在其他单元格的前面
【发布时间】:2015-12-03 13:13:54
【问题描述】:

我的视图控制器中有一个UICollectionView。它已经设置好并且工作正常。

当单元格内部的按钮被按下时,我正在尝试缩放单元格。

我的代码放大了单元格但是,我找不到强制选择的单元格到其他单元格前面的方法。 现在单元格选择它总是在被选择之前的单元格后面。

如何强制选中的单元格在其他单元格前面放大?

@IBAction func detailBtnAction(sender:UIButton){

        let indexUser = (sender.layer.valueForKey("indexBtn")) as! Int
        let indexPath = NSIndexPath(forItem: indexUser, inSection: 0)
        let feedCell = feedCollectionView.cellForItemAtIndexPath(indexPath)
            feedCell?.bringSubviewToFront(feedCollectionView)

        feedCell?.contentView.bringSubviewToFront(feedCollectionView)

        UIView.animateWithDuration(1.0) { () -> Void in
            feedCell?.transform = CGAffineTransformMakeScale(5, 5)
        }

}

【问题讨论】:

  • 在我看来,您正在做的事情是个坏主意。一般来说,Apple 的复杂 UI 对象(集合视图、表格视图、选择器等)应该被视为“黑匣子”,您不应该弄乱它们的视图层次结构。在集合视图的情况下,您拥有每个单元格的内容,但操纵单元格本身的大小/顺序/变换可能会导致问题。

标签: ios uicollectionview swift2


【解决方案1】:

看来你的顺序有点混乱。

来自文档:

移动指定的子视图,使其出现在其兄弟视图之上。

func bringSubviewToFront(_ view: UIView)

参数

view - 移动到前面的子视图。

此方法将指定视图移动到子视图属性中视图数组的末尾。

所以你的电话:
feedCell?.contentView.bringSubviewToFront(feedCollectionView)
实际上意味着单元格内容视图应该将feedCollectionView 移到前面。
现在,这是基于命名的一些有根据的猜测,但它应该看起来像这样:
feedCollectionView.bringSubviewToFront(feedCell?)

您可以在此处传递单元格本身,因为它继承自 UIView

【讨论】:

  • 非常感谢.. 不知道我为什么反其道而行之!!
  • 没问题,有时最明显的东西是最难发现的;]
【解决方案2】:

将单元格带到前面。您可以在再次添加后删除单元格:`

mCollectionView.reloadData() mCollectionView.performBatchUpdates(nil, completion: { (result) in var indexPath = IndexPath(row: 0, section: 0) var cell = mCollectionView.cellForItem(at: indexPath) cell.removeFromSuperview() mCollectionView.addSubview(cell)})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多