Swift - 仿寫QQ側滑選單
公司專案一直沒有推進, 只能自己寫一些Swift程式碼, 準備全面轉向Swift開發.
之前的專案中使用過抽屜效果, 一直都是使用第三方, 準備自己一個抽屜
最終效果
![900393-40982fb1c563f402.gif](https://i.iter01.com/images/e5490c3fbe4a6ab8f11d08107d7d1017545cd5113f9a4c7a4dec0e3302fd35cb.gif)
執行效果
1. Storyboard
- 本人懶, 就沒有搭UI, 使用兩張截圖
-
在 HomeViewController 中新增 UIPanGestureRecognizer, 並進行關聯
螢幕快照 2016-05-18 16.12.41.png
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)
}
}
結語
只是實現了一個側滑的效果, 並沒有實現相關的功能, 待完善
相關文章
- Flutter | 超簡單仿微信QQ側滑選單元件Flutter元件
- Flutter:手把手教你實現一個仿QQ側滑選單的功能Flutter
- Android-WItemTouchHelperPlus幾行程式碼搞定仿QQ側滑Android行程
- (六)仿QQ首頁drawer/側滑刪除/浮動imgaeView/角標拖拽View
- 原生Android 側滑選單實踐(部分)Android
- 自定義控制元件?試試300行程式碼實現QQ側滑選單控制元件行程
- Vue 仿QQ左滑刪除元件Vue元件
- Flutter 仿iOS側滑返回案例實現FlutteriOS
- css3實現側邊滑動選單CSSS3
- iOS開發UI篇--一個側滑選單SlidingMenuiOSUI
- 利用DrawerLayout實現側滑選單學習總結
- 讓web擁有原生手機側滑選單那種順滑外掛Web
- Android側滑返回分析和實現(不高仿微信)Android
- Swift仿寫有妖氣漫畫Swift
- Swift仿寫喜馬拉雅FMSwift
- Dcat-admin重寫頂部右側下拉選單
- 短視訊平臺開發,依靠DrawerLayout實現側滑選單效果
- 微信小程式仿微信, QQ 向左滑動刪除操作。微信小程式
- iOS 如何絲滑的側滑返回iOS
- Flutter 側滑欄及城市選擇UI的實現FlutterUI
- mui關閉側滑UI
- iOS開發之解決MMDrawerController側滑選單與中心檢視手勢衝突iOSController
- 用jquery外掛寫一個小米官網左側二級選單jQuery
- Swift全屏滑動返回Swift
- Android側滑(右滑、下拉)返回控制元件 - SwipeBackLayoutAndroid控制元件
- HTML歷理 ICbA的側欄選單HTML
- TornadoFx實現側邊欄選單效果
- 《iPhone側滑不相容-mui》iPhoneUI
- Android 仿微信, QQ 裁剪Android
- Android最簡單的側劃選單,DrawerLayout的使用Android
- 側邊浮動網站客服QQ網站
- JavaScript側欄緩動分享選單詳解JavaScript
- 簡單仿QQ登入介面,儲存資訊到sd卡SD卡
- Android入門教程 | DrawerLayout 側滑欄Android
- Activity側滑返回的實現原理
- CollectionView 單個選項卡的滑動View
- 短視訊軟體開發,按鈕側滑顯示各個選項
- 電商左側商品分類選單實現
- OT部分頁面左側選單不顯示