From d07c24cf277a519747f53d19ff854a478550f330 Mon Sep 17 00:00:00 2001 From: liruiling <1149692392@qq.com> Date: Mon, 29 Aug 2016 14:36:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 34733 -> 34803 bytes .../TaskBoardViewController.swift | 137 ++++++++++-------- 2 files changed, 73 insertions(+), 64 deletions(-) diff --git a/iOS_TaskBoard_test.xcworkspace/xcuserdata/rui.xcuserdatad/UserInterfaceState.xcuserstate b/iOS_TaskBoard_test.xcworkspace/xcuserdata/rui.xcuserdatad/UserInterfaceState.xcuserstate index 1e5f84fb8598dd94bdb9116e08d8622cbeb62d8b..8597698fa249055551447506fa75c4f3decddb4e 100644 GIT binary patch delta 15540 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 z zdFfc`caMbahGWzyx+71CAGkDNu$5@)G%E9chE zZJgUVcX00H+{L+@v%9mWvzN1va}VcU&V8JNT%3cQ!<-|XWzGs`wX@DSPS`cHmu<51 zT<7`D3!N9Y>fcJyO4Ul!O6Ri7rP*bJ%O;mCuH9VyT?1VExCXjzblv5;$913Ufi~(k z$!${Gq_-K=c6-}HZ4b9S+V*(6S?!j#Yi!rlZe@F)_Wjxiw-0R}-eF0Hbsd^JZ0NA5 zBipfU$MzjNcI@1#rqk$7woa(ixXx!ff7AI!=UcYU-*z!{sq0eTWoVb-T~Bwt*7bVV zn_X|av2JbM+Pigh>+H6`ZMEAPw{>pK?tR>&+-2@D?n?K)?kC(&xu0=A=h@dY+EebS z@Kky3_dMl!#`B!#h3VubwA^k;+5}J=vC}h>b2eLkk?_a zqh80o2Y6?C+p@iLz4N`l@xJGM-}|BWW1m`|F+RM{SfBAehkVZZocFotbJ^F&x1VpY zZ>Vp$?{?oqzK4B}`X2Y2>^IkMzTZN>#XWxP@vO&hJ$~=;vgg2_xjplH7WORmKj?qP z|D68?|4RW}K)Zkr0i6Q61k?whfN=ru1xyII5pX}?VZh^nC%x6S-pRdFd#Cpv)ca!Z z+r97f{=WB*ePjA2^iArU+&8uF*}m8N-t2q3@14N#Ky9EtFfMRF;PJrAfnNoF9r#VZ z$bR~Mas3ALOYA?r|Dyg&`Y-FhJh*#s-(dXxDL5p!A$Vf&%wQq-!{E8W^MjWMuLxch z{88}Q;Pt_WgC7LH4Dk->9TFO13ky+(B!vtP$qLB{$qOk6DGRZLRD@K8)P&T9d=RoV zWPixrkS8IpLq(zOL)}9?L%l+MLj6JmL;HmW2(p`$`4hi(qt5qc!_Z0PmS zA42bj{uKHk^ik;Z&=;YvLSKi0Ffz<7OdFOK)(|#6Y-ZTJu$5sShiweo9JbXKwk>Q= z*uJm>VTZyFhaC+&8+JA9hp@+CPr`l)`!(!&I1H!4nQ$ PSkE7oHTJ8$Le#gYX66 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 delta 16269 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 diff --git a/iOS_TaskBoard_test/TaskBoardViewController.swift b/iOS_TaskBoard_test/TaskBoardViewController.swift index 87b801a..5437857 100644 --- a/iOS_TaskBoard_test/TaskBoardViewController.swift +++ b/iOS_TaskBoard_test/TaskBoardViewController.swift @@ -75,12 +75,12 @@ class TaskBoardViewController: UIViewController { private var _snapshotView: UIView? private var _draggingTaskCell: TaskTableViewCell? private var _draggingListCell: TasksCollectionViewCell? - + private var _lastDragging: (listIndexPath: NSIndexPath, taskIndexPath: NSIndexPath)? -// private var _taskLists:[[String]] = [] + // private var _taskLists:[[String]] = [] - private var _taskLists: [TaskList] = [] + private var _taskLists: [TaskList] = [] private var _keyboardMan: KeyboardMan! private var _isZooming: Bool = false @@ -119,43 +119,43 @@ class TaskBoardViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - for index in 0...7 { - var numbers = 0 - - if index == 0 { - numbers = 6 - } else if index == 1 { - numbers = 32 - } else if index == 2 || index == 6 { - numbers = 8 - } else if index == 3 || index == 4 { - numbers == 13 - } else { - numbers = 5 - } - var tasks: [Task] = [] - - - for number in 0...numbers { - let task = Task(title: "\(number)", hidden: false) - tasks.append(task) - } - -// taskLists.append() - _taskLists.append(TaskList(name: "新建任务\(index)", hidden: false, tasks: tasks)) - } + for index in 0...7 { + var numbers = 0 + + if index == 0 { + numbers = 6 + } else if index == 1 { + numbers = 32 + } else if index == 2 || index == 6 { + numbers = 8 + } else if index == 3 || index == 4 { + numbers == 13 + } else { + numbers = 5 + } + var tasks: [Task] = [] + + + for number in 0...numbers { + let task = Task(title: "\(number)", hidden: false) + tasks.append(task) + } + + // taskLists.append() + _taskLists.append(TaskList(name: "新建任务\(index)", hidden: false, tasks: tasks)) + } // // taskLists = _taskLists -// _taskLists = [ -// ["1", "2", "3", "4", "5", "6"], -// ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16"], -// ["1", "2", "3", "4", "5", "6", "7", "8"], -// ["1", "2", "3", "4", "5", "6", "7", "8", "4", "5", "6", "7", "8"], -// ["1", "2", "3", "4", "5", "6", "7"], -// ["1", "2", "3", "4", "5", "6", "7", "8", "4", "5", "6", "7", "8"], -// ["1", "2", "3", "4", "5", "6", "7", "8"] -// ] + // _taskLists = [ + // ["1", "2", "3", "4", "5", "6"], + // ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16", "13", "14", "15", "16"], + // ["1", "2", "3", "4", "5", "6", "7", "8"], + // ["1", "2", "3", "4", "5", "6", "7", "8", "4", "5", "6", "7", "8"], + // ["1", "2", "3", "4", "5", "6", "7"], + // ["1", "2", "3", "4", "5", "6", "7", "8", "4", "5", "6", "7", "8"], + // ["1", "2", "3", "4", "5", "6", "7", "8"] + // ] let horizontalInset = margin + lineSpacing @@ -282,7 +282,7 @@ extension TaskBoardViewController: UICollectionViewDataSource, UICollectionViewD cell.tasksViewController?.setupData(_taskLists[indexPath.item].tasks, maxHeight: _itemHeight - _keyboardHeight, superViewHeight: _itemHeight) cell.tasksViewController?.listHeaderViewLongPressActionClosure = { [weak self](longPressGuesture: UILongPressGestureRecognizer) in guard let weakSelf = self else { return } - weakSelf._listHeadViewLongGuestureAction(longPressGuesture) + weakSelf._listHeadViewLongGuestureAction(longPressGuesture) } return cell } @@ -362,36 +362,45 @@ extension TaskBoardViewController { _collectionView.stopAutoScroll() if _snapshotView == nil { + let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.25 * Double(NSEC_PER_SEC))) + dispatch_after(delayTime, dispatch_get_main_queue(), { + if self._snapshotView != nil { + self._headViewLongGuestureCancelled() + } + }); return } - _snapshotView?.transform = CGAffineTransformIdentity - _snapshotView?.removeFromSuperview() - _snapshotView = nil - - if _isListColelctionViewIsZooming { - guard let indexpath = _lastDragging?.listIndexPath else { - _isListColelctionViewIsZooming = false - _isCollectionViewIndexPathChanged = false - return - } - var rebackRow = 0 - if _isCollectionViewIndexPathChanged { - if indexpath.row == (_collectionView.numberOfItemsInSection(0) - 1) || indexpath.row == 0 || _ScrollToLeftDirection { - rebackRow = indexpath.row - } else { - rebackRow = indexpath.row - 1 - } - } else { - rebackRow = indexpath.row - } - _currentIndexPath = NSIndexPath(forItem: rebackRow, inSection: 0) - _zoomingCollectionView() + _headViewLongGuestureCancelled() + default: + break + } + } + + private func _headViewLongGuestureCancelled() { + _snapshotView?.transform = CGAffineTransformIdentity + _snapshotView?.removeFromSuperview() + _snapshotView = nil + + if _isListColelctionViewIsZooming { + guard let indexpath = _lastDragging?.listIndexPath else { _isListColelctionViewIsZooming = false _isCollectionViewIndexPathChanged = false + return } - - default: - break + var rebackRow = 0 + if _isCollectionViewIndexPathChanged { + if indexpath.row == (_collectionView.numberOfItemsInSection(0) - 1) || indexpath.row == 0 || _ScrollToLeftDirection { + rebackRow = indexpath.row + } else { + rebackRow = indexpath.row - 1 + } + } else { + rebackRow = indexpath.row + } + _currentIndexPath = NSIndexPath(forItem: rebackRow, inSection: 0) + _zoomingCollectionView() + _isListColelctionViewIsZooming = false + _isCollectionViewIndexPathChanged = false } } } @@ -520,7 +529,7 @@ extension TaskBoardViewController { } else { _taskLists[listIndexPath.item].tasks.insert(draggingData, atIndex: taskIndexPath.row) } - + tasksViewController.insertTask(draggingData, atIndexPath: taskIndexPath) tasksViewController.updateTableViewHeight(true, additionHeight: _draggingTaskCell?.bounds.height ?? 0, maxHeight: _itemHeight, superViewHeight: _itemHeight) }