Swift 如何在UITableViewCell中隐藏UITableViewCellReorderControl的空间?

Swift 如何在UITableViewCell中隐藏UITableViewCellReorderControl的空间?,swift,uitableview,ios9,Swift,Uitableview,Ios9,当手机要显示时,我会这样做: func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { if let reorderControl = cell.huntedSubviewWithClassName("UITableViewCellReorderControl") { let resi

当手机要显示时,我会这样做:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    if let reorderControl = cell.huntedSubviewWithClassName("UITableViewCellReorderControl") {

        let resizedReorderControl = UIView(frame: CGRectMake(0, 0, CGRectGetMaxX(reorderControl.frame), CGRectGetMaxY(reorderControl.frame)))

        resizedReorderControl.addSubview(reorderControl)
        cell.addSubview(resizedReorderControl)

        let sizeDifference = CGSizeMake(resizedReorderControl.frame.size.width - reorderControl.frame.size.width, resizedReorderControl.frame.size.height - reorderControl.frame.size.height)
        let transformRatio = CGSizeMake(resizedReorderControl.frame.size.width / reorderControl.frame.size.width, resizedReorderControl.frame.size.height / reorderControl.frame.size.height)

        var transform = CGAffineTransformIdentity

        transform = CGAffineTransformScale(transform, transformRatio.width, transformRatio.height)
        transform = CGAffineTransformTranslate(transform, -sizeDifference.width / 2, -sizeDifference.height / 2)

        resizedReorderControl.transform = transform
    }
}
简单的获取重新排序视图并将其转换为可以对整个单元格进行重新排序。但在将“重新排序”控件移动到不同的子视图后,仍留有空间

刚刚显示的单元格:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    if let reorderControl = cell.huntedSubviewWithClassName("UITableViewCellReorderControl") {

        let resizedReorderControl = UIView(frame: CGRectMake(0, 0, CGRectGetMaxX(reorderControl.frame), CGRectGetMaxY(reorderControl.frame)))

        resizedReorderControl.addSubview(reorderControl)
        cell.addSubview(resizedReorderControl)

        let sizeDifference = CGSizeMake(resizedReorderControl.frame.size.width - reorderControl.frame.size.width, resizedReorderControl.frame.size.height - reorderControl.frame.size.height)
        let transformRatio = CGSizeMake(resizedReorderControl.frame.size.width / reorderControl.frame.size.width, resizedReorderControl.frame.size.height / reorderControl.frame.size.height)

        var transform = CGAffineTransformIdentity

        transform = CGAffineTransformScale(transform, transformRatio.width, transformRatio.height)
        transform = CGAffineTransformTranslate(transform, -sizeDifference.width / 2, -sizeDifference.height / 2)

        resizedReorderControl.transform = transform
    }
}

移动时移动单元格:

单元格应如下所示(能够在没有空间进行重新排序控制的情况下重新排序):

我是什么意思?


我的想法是通过点击
UITableViewCell
上的任何位置(而不仅仅是点击右侧的三行线)来对其重新排序。然后我得到这些
UIView
,并将其散布到整个单元格中。但出现了一些问题。三行的空格留空。如何删除该空间?

我不建议访问私有类(UITableViewCellReorderControl),因为苹果不鼓励这样做。除此之外,他们有权随时对该物业进行任何修改。 但是,如果在添加已发布的上述代码后仍需要删除右侧的空白,只需将此代码添加到UITableViewCell子类:

override func layoutSubviews() {
    super.layoutSubviews()
    contentView.frame.size.width = frame.size.width
}

顺便说一句,这只是一个解决办法。

我不明白你在找什么。但我想你是在说我更新了问题。请看一看。如果AIK UITableViewCellReorderControl不是公共类,您的应用可能会因此被拒绝。我建议添加长点击手势识别器,拍摄单元格快照,添加模拟单元格的子视图,并在移动此视图时根据需要修改数据源。虽然实现起来不那么容易,但你几乎可以完全控制它的外观。真的吗?禁止吗?因此,我如何通过点击整个单元格来重新排序单元格,而不显示重新排序控件。可能吗?你可以把你的答复作为答复张贴出来。谢谢。