一種快速整合引導圖的控制元件
前言
App開發,為了給使用者更好的體驗,我們都會在首次安裝的時候,增加引導圖。引導圖的設計有很多方式,本文接下來就介紹一種快速整合引導圖的方式。先看看效果:
目標:
- 學習如何做一個屬於自己的公共控制元件
- 學習如何在檢視類中建立代理以及呼叫使用代理
核心方法
1、提供圖片陣列、兩個點選按鈕名稱、背景顏色的定製
self.guideViewController = AppGuideViewController(images: coverImageNames,
firsBtnName: "立即體驗", secondBtnName: nil,
firstBtnBg: UIColor(hex: 0x43678d), secondBtnBg: nil)
2、兩個回撥方法.點選按鈕後回撥,滑動到最後一張圖片的時候回撥
self.guideViewController?.firstBtnPress = {
() -> Void in
self.window!.rootViewController = vc;
}
self.guideViewController?.scrollRightEdge = {
() -> Void in
self.guideViewController?.isLoading = false
}
3、設計用typealias來定義閉包
typealias ButtonPress = () -> Void //按鈕點選事件回撥
typealias ScrollRightEdge = () -> Void //滑動事件回撥,主要為了滑動到最後一頁彈出按鈕
4、設計一個標誌,作為是否彈出按鈕的標誌
var isLoading: Bool = false {
didSet {
if self.viewContainer.isHidden {
//彈出按鈕
self.viewContainer.isHidden = false
self.viewContainer.alpha = 0
UIView.animate(withDuration: 0.3, animations: {
self.viewContainer.alpha = 1
})
}
}
}
5、建立一個容器來放按鈕,用來實現彈出按鈕效果
let viewWidth = self.view.bounds.width
self.viewContainer = UIView()
self.viewContainer.frame = CGRect(x: self.buttonMargin, y: self.pageControl.frame.origin.y + 40, width: viewWidth - self.buttonMargin * 2, height: 40)
self.viewContainer.backgroundColor = UIColor.clear
self.view.addSubview(self.viewContainer)
6、實現滾動代理
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let index: Int = Int(scrollView.contentOffset.x / self.view.frame.size.width)
let alpha: CGFloat = 1 - ((scrollView.contentOffset.x - CGFloat(index) * self.view.frame.size.width) / self.view.frame.size.width)
if self.backgroundViews.count > index {
let v = self.backgroundViews[index]
v.alpha = alpha
}
self.pageControl.currentPage = 0
self.pageControl.currentPage = Int(scrollView.contentOffset.x / (scrollView.contentSize.width / CGFloat(self.numberOfPagesInScrollViewPaging())))
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if self.pageControl.currentPage == self.numberOfPagesInScrollViewPaging() - 1 {
self.scrollRightEdge?()
}
}
最後
以上就是我關於快速構建引導圖的一次實踐。分享給大家,如果裡面有什麼錯誤,歡迎大家多多指教。
完整的程式碼請檢視:我的github
相關文章
- Android高亮引導控制元件Android控制元件
- AoE:一種快速整合AI的終端執行環境SDKAI
- 新手引導動畫的4種實現方式動畫
- WPF|快速新增新手引導功能(支援MVVM)MVVM
- 一種Oracle快速的整合遷移方案(r12筆記第98天)Oracle筆記
- 一種基於園區電子地圖的導航方法,怎樣製作智慧導航園區導覽圖?地圖
- D3 力導向圖和 WebGL 的整合使用Web
- 擴散引導語言建模(DGLM):一種可控且高效的AI對齊方法AI
- 由整合ARouter引發的一些思考
- GRUB引導進單使用者模式的三種方式模式
- 領導讓我搞持續整合------流程圖流程圖
- 如何可以快速創作思維導圖?好用的mac思維導圖軟體推薦Mac
- 一種角色扮演類模擬經營遊戲的引導體系構建方法遊戲
- Gradle系列-引導篇(一)Gradle
- 一種快速安裝InnoDB Cluster的方法
- demo簡說幾種控制元件一控制元件
- android:佈局引數,控制元件屬性及各種xml的作用Android控制元件XML
- SpringBoot整合RabbitMQ(一)快速入門Spring BootMQ
- 一次快速排序引發的jvm調優排序JVM
- 一次快速排序錯誤引發的思考排序
- PlantUML --- 使用程式碼快速繪製時序圖、思維導圖時序圖
- 【乾貨】jsMind思維導圖整合Easyui的右鍵選單JSUI
- Linux引導過程和GRUB引導器Linux
- [FAQ09717]如何去掉mtk自行開發的OOBE快速嚮導 功能中的某段操作引導影片的播放?
- 【中亦安圖】導致Oracle效能抖動的引數提醒(4)Oracle
- 快速開發UI控制元件UI控制元件
- 室內導航地圖怎麼做,如何快速建立室內地圖地圖
- SSM框架快速整合redisSSM框架Redis
- 快速整合搭建SSM框架SSM框架
- 【完全開源】百度地圖Web service API C#.NET版,帶地圖顯示控制元件、導航控制元件、POI查詢控制元件地圖WebAPIC#控制元件
- vue 專案整合active控制元件Vue控制元件
- Spark,一種快速資料分析替代方案Spark
- 教你用四步快速將圖表整合到場景
- iOS - Swift快速整合啟動頁廣告,支援GIF,支援本地圖片iOSSwift地圖
- 一種快速恢復資料庫的方法——Flashback DB資料庫
- canvas渲染熱力圖的一種方式Canvas
- iOS原生專案整合 React Native 一 導航iOSReact Native
- 另一種快取,Spring Boot 整合 Ehcache快取Spring Boot