前言 “千淘萬漉雖辛苦,吹盡狂沙始到金!痹谶@快速變化的互聯(lián)網(wǎng)行業(yè),身邊的朋友有的選擇了勇敢創(chuàng)業(yè),有的則在技術(shù)的海洋中默默耕耘。時(shí)常在深夜反思,作為一個(gè)開發(fā)者,我們的價(jià)值何在?答案或許就在那行代碼中,潤(rùn)物細(xì)無聲。以下是我在日常開發(fā)中封裝的一個(gè)彈窗管理工具——CLPopoverManager,希望能為
“千淘萬漉雖辛苦,吹盡狂沙始到金!痹谶@快速變化的互聯(lián)網(wǎng)行業(yè),身邊的朋友有的選擇了勇敢創(chuàng)業(yè),有的則在技術(shù)的海洋中默默耕耘。時(shí)常在深夜反思,作為一個(gè)開發(fā)者,我們的價(jià)值何在?答案或許就在那行代碼中,潤(rùn)物細(xì)無聲。以下是我在日常開發(fā)中封裝的一個(gè)彈窗管理工具——CLPopoverManager,希望能為大家提供一些靈感和幫助。
在移動(dòng)應(yīng)用開發(fā)中,彈窗作為一種重要的用戶交互方式,使用頻率非常高。無論是提示信息、廣告展示,還是操作確認(rèn),彈窗都扮演著重要角色。然而,如果彈窗的顯示邏輯缺乏合理控制,可能會(huì)出現(xiàn)彈窗重疊、順序混亂等問題,極大影響用戶體驗(yàn)。因此,我開發(fā)了CLPopoverManager,旨在為彈窗顯示提供一個(gè)統(tǒng)一、可控的管理方案。
CLPopoverManager具有多種功能,包括支持排隊(duì)、插隊(duì)、替換、唯一模式,支持優(yōu)先級(jí)設(shè)置、去重標(biāo)記、手勢(shì)穿透、自動(dòng)隱藏、自動(dòng)旋轉(zhuǎn)、隱藏狀態(tài)欄、狀態(tài)欄樣式、設(shè)置界面方向和夜間模式等。
彈窗采用偽單例模式管理UIWindow,內(nèi)部采用自定義隊(duì)列控制顯示順序,對(duì)外使用UIViewController。
自定義UIViewController繼承CLPopoverController并且遵守CLPopoverProtocol協(xié)議即可,內(nèi)部可以自行實(shí)現(xiàn)彈窗相關(guān)動(dòng)畫和UI。
示例代碼:
class CustomPopoverController: CLPopoverController, CLPopoverProtocol {
// 實(shí)現(xiàn)彈窗相關(guān)邏輯
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
private func setupUI() {
// 配置彈窗UI
}
func showAnimation(completion: (() -> Void)? = nil) {
// 顯示動(dòng)畫
}
func dismissAnimation(completion: (() -> Void)? = nil) {
// 隱藏動(dòng)畫
}
}
/// 彈出
let popover = CustomPopoverController()
popover.config.popoverMode = .queue
let key = CLPopoverManager.show(popover: popover)
/// 隱藏單個(gè)彈窗
CLPopoverManager.dismiss(key)
/// 隱藏所有彈窗
CLPopoverManager.dismissAll()
彈窗模式包括排隊(duì)模式、插隊(duì)模式、替換模式和唯一模式。優(yōu)先級(jí)設(shè)置對(duì)進(jìn)入等待隊(duì)列中的彈窗生效,高優(yōu)先級(jí)的彈窗將優(yōu)先顯示。
常見問題解答(QA):
為什么使用UIViewController而不是UIView?UIViewController相比UIView能夠提供生命周期相關(guān)方法,管理起來更加方便。
為什么使用UIWindow?UIWindow可以不入侵項(xiàng)目UI,保障不擾亂當(dāng)前項(xiàng)目的同時(shí),可以實(shí)現(xiàn)橫豎屏切換、狀態(tài)欄樣式等。
為什么是偽單例模式?彈窗管理在所有彈窗都銷毀后,會(huì)自動(dòng)銷毀管理者的單例。
為什么有優(yōu)先級(jí)的情況還需要這么多模式?需求多種多樣,為保障靈活性的同時(shí),還能夠保障彈窗的順序。
通過封裝CLPopoverManager,我們能夠更好地管理iOS應(yīng)用中的彈窗顯示邏輯,提升用戶體驗(yàn),保障應(yīng)用的穩(wěn)定性。希望這個(gè)工具能夠幫助到大家,同時(shí)也歡迎各位提出寶貴的意見和建議。
開發(fā)是一種藝術(shù),不僅需要技術(shù)的積累,更需要靈感和創(chuàng)造力。愿我們?cè)谧非蠹夹g(shù)之巔的路上,能夠彼此激勵(lì),共同成長(zhǎng)。愿所有的開發(fā)者都能在自己的代碼世界中找到那一片屬于自己的凈土。
PS :心中感慨良多,奈何腹中無墨,一個(gè)字總結(jié)——懶。順便附上github,有興趣的可以去看看。
小編推薦閱讀機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)