美文网首页
Swift-使用长按手势移动cell

Swift-使用长按手势移动cell

作者: GloryMan | 来源:发表于2018-01-09 15:45 被阅读417次

    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

    相关文章

      网友评论

          本文标题:Swift-使用长按手势移动cell

          本文链接:https://www.haomeiwen.com/subject/zyfgnxtx.html