一種快速整合引導圖的控制元件
前言
App開發,為了給使用者更好的體驗,我們都會在首次安裝的時候,增加引導圖。引導圖的設計有很多方式,本文接下來就介紹一種快速整合引導圖的方式。先看看效果:

1.gif
目標:
- 學習如何做一個屬於自己的公共控制元件
- 學習如何在檢視類中建立代理以及呼叫使用代理
核心方法
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
- WPF|快速新增新手引導功能(支援MVVM)MVVM
- 一張圖快速瞭解23種設計模式設計模式
- 新手引導動畫的4種實現方式動畫
- 一種基於園區電子地圖的導航方法,怎樣製作智慧導航園區導覽圖?地圖
- 擴散引導語言建模(DGLM):一種可控且高效的AI對齊方法AI
- Gradle系列-引導篇(一)Gradle
- SpringBoot整合RabbitMQ(一)快速入門Spring BootMQ
- 如何可以快速創作思維導圖?好用的mac思維導圖軟體推薦Mac
- 領導讓我搞持續整合------流程圖流程圖
- 一種快速安裝InnoDB Cluster的方法
- 一種角色扮演類模擬經營遊戲的引導體系構建方法遊戲
- 一次快速排序引發的jvm調優排序JVM
- PlantUML --- 使用程式碼快速繪製時序圖、思維導圖時序圖
- [FAQ09717]如何去掉mtk自行開發的OOBE快速嚮導 功能中的某段操作引導影片的播放?
- vue 專案整合active控制元件Vue控制元件
- springboot快速整合elaticsearchSpring Boot
- 【Springboot】快速整合QuartzSpring Bootquartz
- 另一種快取,Spring Boot 整合 Ehcache快取Spring Boot
- 教你如何寫一個簡單的折線圖控制元件控制元件
- android獲取控制元件的幾種方法Android控制元件
- 室內導航地圖怎麼做,如何快速建立室內地圖地圖
- canvas渲染熱力圖的一種方式Canvas
- Netty中的引導類BootstrapNettyboot
- 不同型別的Syslinux 引導型別Linux
- SlimPHP開發指南一:導引(中英對照)PHP
- FreeFlyOS【一】:boot部分(引導扇區)詳解boot
- 【Flutter 專題】89 圖解基本 Overlay 懸浮新手引導Flutter圖解
- 創新引導
- 教你用四步快速將圖表整合到場景
- Spring Boot 快速整合SwaggerSpring BootSwagger
- 【Spring Boot】快速整合SwaggerSpring BootSwagger
- 「Elasticsearch」SpringBoot快速整合ESElasticsearchSpring Boot
- 一款開源免費的WPF圖表控制元件ModernuiCharts控制元件UI
- spring-boot-route(一)Controller接收引數的幾種方式SpringbootController
- 一種在【微服務體系】下的【引數配置神器】微服務
- 五種高大上的視覺化地圖,10分鐘快速上手,一個程式碼都不用敲視覺化地圖
- ARM開發板實現雙系統引導的一種方法——基於迅為iTOP-4412開發板