title: Swift-使用长按收拾来移动cell
categories:
- Code
- iOS
date: 2016-06-29 10:43:19
tags: - UITableViewCell
最近在项目中需要对cell 进行移动排序,所以搜集了很多资料研究一下,下面是具体的代码细节
大概逻辑
为tableViewCell 添加长按收拾
let longPress = UILongPressGestureRecognizer(target: self, action:#selector(ViewController.longPressGestureRecognized(_:)))
self.tableView.addGestureRecognizer(longPress)
利用手势自带的 state
public enum UIGestureRecognizerState : Int {
case Possible
case Began
case Changed
case Ended
case Cancelle
case Failed
}
长按cell 获取cell 的快照
func customSnapshotFromView(inputView:UIView) - >UIView {
UIGraphicsBeginImageContextWithOptions(inputView.bounds.size, false, 0)
inputView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let snapshot = UIImageView(image: image)
snapshot.layer.masksToBounds = false
snapshot.layer.cornerRadius = 0.0
snapshot.layer.shadowOffset = CGSizeMake(-5.0, 0.0)
snapshot.layer.shadowOpacity = 0.4
return snapshot
}
在移动的时候处理数据源
extension ViewController : UITableViewDelegate {
func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
return .Delete
}
func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
self.titleList.removeObjectAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
完成代码编写 运行查看效果
原文地址
Code Swift:原文地址 - swift 版本
完整项目地址
Code Swift:项目源码 - swift 版本
更多内容
code : info more