Swift - 仿寫QQ側滑選單
公司專案一直沒有推進, 只能自己寫一些Swift程式碼, 準備全面轉向Swift開發.
之前的專案中使用過抽屜效果, 一直都是使用第三方, 準備自己一個抽屜
最終效果
1. Storyboard
- 本人懶, 就沒有搭UI, 使用兩張截圖
-
在 HomeViewController 中新增 UIPanGestureRecognizer, 並進行關聯
2. MeunViewController
- 通過 Storyboard 的 取出 HomeViewController 的 view 新增到subview
- 給 HomeViewController 的 UIPanGestureRecognizer 新增響應事件
// 通過 Storyboard 取出 HomeViewController 的 view, 放在背景上
homeViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
self.view.addSubview(homeViewController.view)
// 繫結 UIPanGestureRecognizer
homeViewController.panGusture.addTarget(self, action: #selector(pan))
3.響應事件
struct Common {
static let screenWidth = UIScreen.mainScreen().bounds.size.width
static let screenHeight = UIScreen.mainScreen().bounds.size.height
}
var homeViewController: HomeViewController!
var distance: CGFloat = 0
let Proportion: CGFloat = 0.3
// 響應 UIPanGestureRecognizer 事件
@objc private func pan(recongnizer: UIPanGestureRecognizer) {
// 獲取實時距離
let x = recongnizer.translationInView(self.view).x
let trueDistance = distance + x
// 如果 UIPanGestureRecognizer 結束, 則自動停靠
if recongnizer.state == UIGestureRecognizerState.Ended {
print(x)
// 判斷停靠位置
if trueDistance > Common.screenWidth * Proportion {
showLeft()
} else {
showHome()
}
return
}
// 只新增左抽屜
if trueDistance < 0 {
return
}
recongnizer.view!.center = CGPointMake(self.view.center.x + trueDistance, self.view.center.y)
}
4 . 手勢響應事件中方法
private func showLeft() {
distance = self.view.center.x * 1.5
doAnmation()
}
private func showHome() {
distance = 0
doAnmation()
}
private func doAnmation() {
UIView.animateWithDuration(0.3,
delay: 0,
options: .CurveEaseInOut,
animations: { () -> Void in
self.homeViewController.view.center = CGPointMake(self.view.center.x + self.distance, self.view.center.y)
},
completion: nil)
}
}
結語
只是實現了一個側滑的效果, 並沒有實現相關的功能, 待完善
相關文章
- (有圖)仿QQ側滑選單:RecyclerView側滑選單,長按拖拽,滑動刪除View
- Flutter | 超簡單仿微信QQ側滑選單元件Flutter元件
- 仿QQ側拉選單
- 史上最簡單,一步整合側滑(刪除)選單,高仿QQ、IOS。iOS
- Flutter:手把手教你實現一個仿QQ側滑選單的功能Flutter
- 自定義view——仿酷狗的側滑選單View
- Android-WItemTouchHelperPlus幾行程式碼搞定仿QQ側滑Android行程
- Android側滑選單DrawerLayout使用Android
- (六)仿QQ首頁drawer/側滑刪除/浮動imgaeView/角標拖拽View
- 自定義View:側滑選單實現View
- Swift一款絲滑的側滑返回Swift
- 自定義控制元件?試試300行程式碼實現QQ側滑選單控制元件行程
- 原生Android 側滑選單實踐(部分)Android
- 自定義View:側滑選單動畫實現View動畫
- android的左右側滑選單實現Android
- Vue 仿QQ左滑刪除元件Vue元件
- Flutter 仿iOS側滑返回案例實現FlutteriOS
- css3實現側邊滑動選單CSSS3
- 【只發精品】匠心打造Vue側滑選單元件Vue元件
- 利用DrawerLayout實現側滑選單學習總結
- Android SlidingMenu側滑選單使用介紹Android
- 讓web擁有原生手機側滑選單那種順滑外掛Web
- 物件化JS之----仿outlook或者QQ的選單 (轉)物件JS
- 自定義ViewGroup,實現Android的側滑選單ViewAndroid
- 帶有視覺滾動差的選單側滑欄視覺
- Android側滑返回分析和實現(不高仿微信)Android
- iOS開發UI篇--一個側滑選單SlidingMenuiOSUI
- 微信小程式仿微信, QQ 向左滑動刪除操作。微信小程式
- Swift仿寫有妖氣漫畫Swift
- Swift仿寫喜馬拉雅FMSwift
- 短視訊平臺開發,依靠DrawerLayout實現側滑選單效果
- Dcat-admin重寫頂部右側下拉選單
- iOS 如何絲滑的側滑返回iOS
- Flutter 側滑欄及城市選擇UI的實現FlutterUI
- mui關閉側滑UI
- iOS UITableView側滑刪除iOSUIView
- 左側分類導航選單
- 用jquery外掛寫一個小米官網左側二級選單jQuery