UI類的常用方法以及使用
1. UI.message(message, options={})
: 輸出一條消息到控制臺(tái)。可以設(shè)置 options
參數(shù)來(lái)配置消息的顏色和其他屬性奢啥。
`UI.message(message, options={})` 方法可以在控制臺(tái)輸出一條消息。該方法的第一個(gè)參數(shù) `message` 是要輸出的消息內(nèi)容,可以是字符串或其他類型。第二個(gè)參數(shù) `options` 是一個(gè)可選的哈希表蝗茁,用于配置消息的格式和顏色等屬性。
例如寻咒,以下代碼會(huì)輸出一條普通消息:
UI.message("這是一條普通消息")
在執(zhí)行上述代碼時(shí)哮翘,控制臺(tái)會(huì)打印 這是一條普通消息
。
另外毛秘,可以使用選項(xiàng)參數(shù) options
來(lái)配置輸出的消息的格式饭寺。例如:
UI.message("這是一條帶顏色的消息", { :color => :red, :bold => true })
上述代碼中,使用了選項(xiàng)參數(shù) `{ :color => :red, :bold => true }` 來(lái)將輸出的消息設(shè)置為紅色粗體顯示叫挟。
常用的 options
參數(shù)包括:
-
:color
:設(shè)置文本顏色艰匙,可以取值為 :default、:black霞揉、:red旬薯、:green晰骑、:yellow适秩、:blue、:magenta硕舆、:cyan 或 :white 等秽荞,具體取值可查看 fastlane 文檔。 -
:bold
:設(shè)置文本是否加粗顯示抚官,可以設(shè)置為 true 或 false扬跋。 -
:italic
:設(shè)置文本是否斜體顯示,可以設(shè)置為 true 或 false凌节。 -
:underline
:設(shè)置文本是否帶下劃線钦听,可以設(shè)置為 true 或 false洒试。 -
:blink
:設(shè)置文本是否閃爍,可以設(shè)置為 true 或 false朴上。
在使用 UI.message()
方法時(shí)垒棋,可以根據(jù)需要配置 options
參數(shù),以實(shí)現(xiàn)更加豐富的消息輸出效果痪宰。
2. UI.verbose(message)
: 輸出詳細(xì)信息到控制臺(tái)叼架,通常用于輸出調(diào)試信息。
`UI.verbose(message)` 方法用于輸出 verbose 級(jí)別的消息衣撬,其作用是在日志中顯示一些詳細(xì)信息乖订,通常用于調(diào)試或診斷問(wèn)題。verbose 級(jí)別的消息只會(huì)在打開(kāi) verbose 模式時(shí)被輸出具练,在普通模式下不會(huì)被輸出乍构。
例如,以下代碼會(huì)輸出一條 verbose 消息:
UI.verbose("這是一條 verbose 消息")
默認(rèn)情況下靠粪,verbose 模式處于關(guān)閉狀態(tài)蜡吧,因此上述代碼不會(huì)輸出任何內(nèi)容。如果要打開(kāi) verbose 模式占键,可以通過(guò) fastlane 命令行工具的 -v
或 --verbose
參數(shù)來(lái)打開(kāi):
fastlane your_lane -v
執(zhí)行上述命令時(shí)昔善,會(huì)打開(kāi) verbose 模式,并輸出所有 verbose 級(jí)別的消息畔乙。
需要注意的是君仆,verbose 模式應(yīng)該只在調(diào)試或診斷問(wèn)題時(shí)使用,不應(yīng)在生產(chǎn)環(huán)境中使用牲距,以避免泄露敏感信息或浪費(fèi)資源返咱。因此,在使用 UI.verbose()
方法時(shí)牍鞠,建議先檢查 verbose 模式是否已經(jīng)打開(kāi)咖摹,再輸出對(duì)應(yīng)的消息。例如:
if $verbose
UI.verbose("這是一條 verbose 消息")
end
上述代碼中难述,使用了全局變量 `$verbose` 來(lái)判斷 verbose 模式是否已經(jīng)打開(kāi)萤晴,如果打開(kāi)則輸出 verbose 消息,否則不做任何操作胁后。這樣可以避免在生產(chǎn)環(huán)境中輸出不必要的 verbose 消息店读,同時(shí)保證在調(diào)試或診斷問(wèn)題時(shí)能夠輸出對(duì)應(yīng)的信息。
3. UI.success(message)
: 輸出成功信息到控制臺(tái)攀芯,字體顏色為綠色屯断。
`UI.success(message)` 方法用于輸出成功狀態(tài)的消息,通常用于表示任務(wù)執(zhí)行成功。使用方法與 `UI.message()` 相似殖演,只需要傳入要輸出的消息內(nèi)容即可:
UI.success("任務(wù)執(zhí)行成功氧秘!")
執(zhí)行上述代碼時(shí),控制臺(tái)會(huì)輸出一條綠色的消息趴久,格式為 [?] 任務(wù)執(zhí)行成功敏储!
,表示任務(wù)已經(jīng)成功完成朋鞍。
需要注意的是已添,UI.success()
方法只是用于輸出成功狀態(tài)的消息,并不會(huì)判斷任務(wù)是否真正成功滥酥。因此更舞,在使用該方法時(shí),應(yīng)該根據(jù)實(shí)際情況來(lái)判斷任務(wù)是否真正成功坎吻,以避免因過(guò)早輸出成功消息而造成的誤解缆蝉。
另外,還可以使用 UI.error()
方法來(lái)輸出失敗狀態(tài)的消息瘦真,其用法與 UI.success()
類似:
UI.error("任務(wù)執(zhí)行失敗刊头,請(qǐng)檢查日志!")
執(zhí)行上述代碼時(shí)诸尽,控制臺(tái)會(huì)輸出一條紅色的消息原杂,格式為 `[?] 任務(wù)執(zhí)行失敗,請(qǐng)檢查日志您机!`穿肄,表示任務(wù)出現(xiàn)了錯(cuò)誤或異常。
4. UI.error(message)
: 輸出錯(cuò)誤信息到控制臺(tái)际看,字體顏色為紅色咸产。
`UI.error(message)` 方法用于輸出失敗狀態(tài)的消息,通常用于表示任務(wù)執(zhí)行失敗或出現(xiàn)錯(cuò)誤仲闽。使用方法與 `UI.message()` 相似脑溢,只需要傳入要輸出的消息內(nèi)容即可:
UI.error("任務(wù)執(zhí)行失敗,請(qǐng)檢查日志赖欣!")
執(zhí)行上述代碼時(shí)屑彻,控制臺(tái)會(huì)輸出一條紅色的消息,格式為 `[?] 任務(wù)執(zhí)行失敗畏鼓,請(qǐng)檢查日志酱酬!`壶谒,表示任務(wù)出現(xiàn)了錯(cuò)誤或異常云矫。
需要注意的是,UI.error()
方法只是用于輸出失敗狀態(tài)的消息汗菜,并不會(huì)導(dǎo)致程序中止或拋出異常让禀。因此挑社,在使用該方法時(shí),應(yīng)該根據(jù)實(shí)際情況來(lái)判斷任務(wù)執(zhí)行狀態(tài)巡揍,并在必要時(shí)采取相應(yīng)的措施痛阻。
另外,還可以使用 UI.success()
方法來(lái)輸出成功狀態(tài)的消息腮敌,其用法與 UI.error()
類似:
UI.success("任務(wù)執(zhí)行成功阱当!")
執(zhí)行上述代碼時(shí),控制臺(tái)會(huì)輸出一條綠色的消息糜工,格式為 [?] 任務(wù)執(zhí)行成功弊添!
,表示任務(wù)已經(jīng)成功完成捌木。
5. UI.confirm(question)
: 輸出確認(rèn)問(wèn)題到控制臺(tái)油坝,并等待用戶輸入 Y 或 N 進(jìn)行確認(rèn)。
UI.confirm(message)
方法用于向用戶發(fā)出確認(rèn)提示刨裆,讓用戶確認(rèn)是否繼續(xù)執(zhí)行某個(gè)操作澈圈。該方法會(huì)輸出一條帶有提示信息的詢問(wèn)消息,并等待用戶輸入 y
或 n
來(lái)確認(rèn)或取消操作帆啃。使用方法如下:
result = UI.confirm("是否繼續(xù)執(zhí)行瞬女?")
if result
# 用戶選擇了“是”,繼續(xù)執(zhí)行操作
else
# 用戶選擇了“否”努潘,取消操作
end
上述代碼會(huì)在控制臺(tái)輸出 `你確定要執(zhí)行這個(gè)操作嗎拆魏?[y/n]`,然后等待用戶輸入 Y 或 N慈俯。如果用戶輸入 Y渤刃,則 `UI.confirm()` 方法返回 true,否則返回 false贴膘。根據(jù)返回結(jié)果卖子,可以進(jìn)行相應(yīng)的處理。
需要注意的是刑峡,UI.confirm()
方法只會(huì)等待用戶輸入 Y 或 N洋闽,而不會(huì)對(duì)其他輸入進(jìn)行處理。如果用戶輸入了其他字符突梦,則會(huì)拋出異常并結(jié)束程序诫舅。因此,在使用 UI.confirm()
方法時(shí)要確保用戶會(huì)正確地輸入 Y 或 N宫患,以避免不必要的異常刊懈。
另外,UI.confirm()
方法也支持設(shè)置默認(rèn)值⌒檠矗可以將 true
或 false
作為方法的第二個(gè)參數(shù)傳入匾浪,表示用戶不輸入任何內(nèi)容時(shí)的默認(rèn)值。例如:
confirmed = UI.confirm("你確定要執(zhí)行這個(gè)操作嗎卷哩?", true)
上述代碼中蛋辈,如果用戶在控制臺(tái)輸入了空白字符,例如按下了回車(chē)鍵将谊,則 confirmed
變量會(huì)被默認(rèn)值 true 初始化冷溶。如果用戶輸入了 Y 或 N,則 confirmed
變量會(huì)被相應(yīng)的值初始化尊浓。
需要注意的是挂洛,UI.confirm()
方法會(huì)阻塞當(dāng)前線程,直到用戶輸入了合法的確認(rèn)或取消指令眠砾。因此虏劲,在使用該方法時(shí),應(yīng)該避免在主線程中調(diào)用褒颈,以免阻塞應(yīng)用程序的運(yùn)行柒巫。
另外,還可以使用 UI.input()
方法來(lái)接收用戶輸入的文本內(nèi)容谷丸,其用法與 UI.confirm()
類似堡掏。例如:
name = UI.input("請(qǐng)輸入您的姓名:")
執(zhí)行上述代碼時(shí),控制臺(tái)會(huì)輸出一條提示信息刨疼,讓用戶輸入自己的姓名泉唁。用戶輸入完成后,按下回車(chē)鍵即可將輸入內(nèi)容作為 name
變量的值返回揩慕。
6. UI.input(message)
: 輸出提示信息到控制臺(tái)亭畜,并等待用戶輸入文本。
UI.input(prompt)
方法用于向用戶發(fā)出輸入提示迎卤,讓用戶輸入某個(gè)文本內(nèi)容拴鸵。該方法會(huì)輸出一條帶有提示信息的消息,并等待用戶輸入文本內(nèi)容蜗搔。使用方法如下:
name = UI.input("請(qǐng)輸入您的姓名:")
UI.message("您輸入的姓名是#{name}")
執(zhí)行上述代碼時(shí)劲藐,控制臺(tái)會(huì)輸出一條形如 請(qǐng)輸入您的姓名:
的提示信息,并等待用戶輸入自己的姓名樟凄。用戶輸入完成后聘芜,按下回車(chē)鍵即可將輸入內(nèi)容賦值給 name
變量,并繼續(xù)執(zhí)行后續(xù)的操作缝龄。
需要注意的是吱晒,UI.input()
方法會(huì)阻塞當(dāng)前線程,直到用戶輸入了合法的文本內(nèi)容。因此,在使用該方法時(shí)姿鸿,應(yīng)該避免在主線程中調(diào)用,以免阻塞應(yīng)用程序的運(yùn)行珊燎。
另外矮瘟,還可以使用 UI.confirm()
方法來(lái)向用戶發(fā)出確認(rèn)提示,讓用戶確認(rèn)是否繼續(xù)執(zhí)行某個(gè)操作饭望。其用法與 UI.input()
類似仗哨,例如:
result = UI.confirm("是否繼續(xù)執(zhí)行?")
if result
# 用戶選擇了“是”铅辞,繼續(xù)執(zhí)行操作
else
# 用戶選擇了“否”厌漂,取消操作
end
執(zhí)行上述代碼時(shí),控制臺(tái)會(huì)輸出一條形如 [?] 是否繼續(xù)執(zhí)行斟珊? (y/n)
的詢問(wèn)消息苇倡,讓用戶輸入 y
或 n
來(lái)確認(rèn)或取消操作。如果用戶輸入了 y
囤踩,則 UI.confirm()
方法返回 true
旨椒,表示用戶確認(rèn)執(zhí)行操作;如果用戶輸入了 n
堵漱,則 UI.confirm()
方法返回 false
综慎,表示用戶取消操作。
7. UI.select(message, options)
: 輸出提示信息和選項(xiàng)列表到控制臺(tái)勤庐,并等待用戶選擇一個(gè)選項(xiàng)示惊。
UI.select(title, options)
方法用于向用戶發(fā)出選擇提示,讓用戶從多個(gè)選項(xiàng)中選擇一個(gè)愉镰。該方法會(huì)輸出一條帶有選項(xiàng)列表的消息米罚,并等待用戶輸入選擇編號(hào)或名稱。使用方法如下:
options = ["選項(xiàng)1", "選項(xiàng)2", "選項(xiàng)3"]
selected = UI.select("請(qǐng)選擇一個(gè)選項(xiàng):", options)
UI.message("您選擇的選項(xiàng)是:#{selected}")
執(zhí)行上述代碼時(shí)丈探,控制臺(tái)會(huì)輸出一條形如:
請(qǐng)選擇一個(gè)選項(xiàng):
1. 選項(xiàng)1
2. 選項(xiàng)2
3. 選項(xiàng)3
的選項(xiàng)列表阔拳,讓用戶根據(jù)自己的需要輸入選擇編號(hào)或名稱。用戶輸入完成后类嗤,按下回車(chē)鍵即可將選擇結(jié)果作為 selected
變量的值返回糊肠,并繼續(xù)執(zhí)行后續(xù)的操作。
需要注意的是遗锣,UI.select()
方法會(huì)阻塞當(dāng)前線程货裹,直到用戶輸入了合法的選擇編號(hào)或名稱。因此精偿,在使用該方法時(shí)弧圆,應(yīng)該避免在主線程中調(diào)用赋兵,以免阻塞應(yīng)用程序的運(yùn)行。
另外搔预,還可以使用 UI.input()
方法來(lái)接收用戶輸入的文本內(nèi)容霹期,然后根據(jù)輸入內(nèi)容進(jìn)行相應(yīng)的操作。例如:
selected = UI.input("請(qǐng)輸入您要選擇的選項(xiàng):")
case selected
when "1"
# 處理選項(xiàng)1的邏輯
when "2"
# 處理選項(xiàng)2的邏輯
when "3"
# 處理選項(xiàng)3的邏輯
else
UI.message("選擇無(wú)效拯田,請(qǐng)重新輸入历造!")
end
執(zhí)行上述代碼時(shí),控制臺(tái)會(huì)輸出一條提示信息船庇,讓用戶輸入自己要選擇的選項(xiàng)編號(hào)或名稱吭产。根據(jù)用戶的輸入內(nèi)容,程序會(huì)執(zhí)行相應(yīng)的操作鸭轮。如果用戶輸入了無(wú)效的選項(xiàng)編號(hào)或名稱臣淤,則輸出一條相應(yīng)的提示信息。
8. UI.password(message)
: 輸出提示信息到控制臺(tái)窃爷,并等待用戶輸入密碼邑蒋。
UI.password(title)
方法用于向用戶發(fā)出密碼輸入提示,讓用戶輸入一個(gè)密碼并返回結(jié)果按厘。該方法會(huì)隱藏輸入的內(nèi)容寺董,以保護(hù)用戶的隱私。使用方法如下:
password = UI.password("請(qǐng)輸入密碼:")
UI.message("您輸入的密碼是:#{password}")
執(zhí)行上述代碼時(shí)刻剥,控制臺(tái)會(huì)輸出一條形如:
請(qǐng)輸入密碼:
的提示信息遮咖,然后等待用戶輸入密碼。用戶輸入的內(nèi)容會(huì)被隱藏造虏,只有小黑點(diǎn)或星號(hào)等代替御吞。用戶輸入完成后,按下回車(chē)鍵即可將輸入的密碼作為 password
變量的值返回漓藕,并繼續(xù)執(zhí)行后續(xù)的操作陶珠。
需要注意的是,UI.password()
方法會(huì)阻塞當(dāng)前線程享钞,直到用戶輸入了內(nèi)容并按下回車(chē)鍵揍诽。因此,在使用該方法時(shí)栗竖,應(yīng)該避免在主線程中調(diào)用暑脆,以免阻塞應(yīng)用程序的運(yùn)行。
另外狐肢,也可以使用 UI.input()
方法來(lái)接收用戶輸入的文本內(nèi)容添吗,然后根據(jù)需要對(duì)輸入內(nèi)容進(jìn)行處理。例如:
password = UI.input("請(qǐng)輸入密碼:", secure: true)
UI.message("您輸入的密碼是:#{password}")
執(zhí)行上述代碼時(shí)份名,控制臺(tái)會(huì)輸出一條提示信息碟联,讓用戶輸入密碼妓美。用戶輸入的內(nèi)容會(huì)被隱藏,只有小黑點(diǎn)或星號(hào)等代替鲤孵。用戶輸入完成后壶栋,按下回車(chē)鍵即可將輸入的內(nèi)容作為 password
變量的值返回,并繼續(xù)執(zhí)行后續(xù)的操作普监。這種方式也可以接收用戶輸入的明文文本贵试,但是不如 UI.password()
方法安全,因?yàn)槿魏稳硕伎梢钥吹接脩糨斎氲膬?nèi)容鹰椒。
9. UI.crash!(message)
: 輸出錯(cuò)誤信息到控制臺(tái)锡移,并退出程序呕童。
UI.crash!(error_message)
方法用于向用戶發(fā)出程序崩潰提示漆际,并輸出錯(cuò)誤信息。該方法會(huì)使程序直接退出夺饲,并輸出一條錯(cuò)誤消息給用戶奸汇。使用方法如下:
UI.crash!("程序出現(xiàn)了異常,請(qǐng)重啟應(yīng)用程序往声!")
執(zhí)行上述代碼時(shí)擂找,控制臺(tái)會(huì)輸出一條形如:
程序出現(xiàn)了異常,請(qǐng)重啟應(yīng)用程序浩销!
的錯(cuò)誤消息贯涎,并立即退出程序。這種方式通常用于處理無(wú)法恢復(fù)的錯(cuò)誤或異常情況慢洋,以避免繼續(xù)執(zhí)行程序而導(dǎo)致更嚴(yán)重的問(wèn)題塘雳。
需要注意的是,UI.crash!()
方法會(huì)直接終止當(dāng)前程序的執(zhí)行普筹,因此在使用該方法時(shí)败明,應(yīng)該確保程序已經(jīng)保存了必要的數(shù)據(jù)和狀態(tài),并選擇合適的位置進(jìn)行調(diào)用太防,以避免數(shù)據(jù)丟失或其他問(wèn)題的發(fā)生妻顶。
此外,還可以使用 UI.message(error_message)
方法輸出錯(cuò)誤消息蜒车,然后在合適的地方退出程序讳嘱。例如:
UI.message("程序出現(xiàn)了異常,請(qǐng)重啟應(yīng)用程序酿愧!")
exit(1)
執(zhí)行上述代碼時(shí)呢燥,控制臺(tái)會(huì)輸出一條形如:
程序出現(xiàn)了異常,請(qǐng)重啟應(yīng)用程序寓娩!
的錯(cuò)誤消息叛氨,并立即退出程序呼渣。這種方式可以在輸出錯(cuò)誤消息后進(jìn)行其他必要的處理,以便更好地保護(hù)程序和數(shù)據(jù)的安全寞埠。
10. UI.important(message)
: 輸出重要信息到控制臺(tái)屁置,字體顏色為黃色。
UI.important(message)
方法用于向用戶發(fā)出重要消息提示仁连,將指定的消息標(biāo)記為重要并加以突出顯示蓝角。該方法可以讓用戶更加關(guān)注該消息,并在需要時(shí)采取相應(yīng)的行動(dòng)饭冬。使用方法如下:
UI.important("這是一條非常重要的消息使鹅!")
執(zhí)行上述代碼時(shí),控制臺(tái)會(huì)輸出一條形如:
?? 這是一條非常重要的消息昌抠! ??
的提示信息患朱,并使用特殊符號(hào)將其標(biāo)記為重要。這種方式可以幫助用戶更好地區(qū)分普通的提示信息和重要的提示信息炊苫,以便更好地理解程序的運(yùn)行狀態(tài)和需要采取的行動(dòng)裁厅。
需要注意的是,UI.important()
方法只是一種提示方式侨艾,并不會(huì)改變程序邏輯或影響程序執(zhí)行执虹。因此,在使用該方法時(shí)唠梨,應(yīng)該選擇合理的位置和時(shí)機(jī)進(jìn)行調(diào)用袋励,并結(jié)合其他方法和邏輯來(lái)完成任務(wù)和目標(biāo)。
11. UI.header(message)
: 輸出標(biāo)題信息到控制臺(tái)当叭,字體加粗茬故。
UI.header(title)
方法用于向用戶發(fā)出標(biāo)題提示,將指定的標(biāo)題作為程序運(yùn)行狀態(tài)或操作的說(shuō)明科展。該方法可以讓用戶更好地理解程序的功能和操作方式均牢,以便更好地使用程序。使用方法如下:
UI.header("程序運(yùn)行狀態(tài)")
執(zhí)行上述代碼時(shí)才睹,控制臺(tái)會(huì)輸出一條形如:
[15:25:58]: --------------
[15:25:58]: --- 程序運(yùn)行狀態(tài) ---
[15:25:58]: --------------
的標(biāo)題信息徘跪,并在標(biāo)題前后使用特殊符號(hào)進(jìn)行修飾。這種方式可以讓用戶更好地識(shí)別程序運(yùn)行狀態(tài)的含義和范圍琅攘,以便更好地進(jìn)行處理和操作垮庐。
需要注意的是,UI.header()
方法只是一種提示方式坞琴,通常用于向用戶展示程序狀態(tài)或操作說(shuō)明等信息哨查。在使用該方法時(shí),應(yīng)該選擇合理的位置和時(shí)機(jī)進(jìn)行調(diào)用剧辐,并結(jié)合其他方法和邏輯來(lái)完成任務(wù)和目標(biāo)寒亥。
最后備注一下UI類的其他方法(隨著版本的迭代, 可能方法名有出入, 請(qǐng)根據(jù)官方調(diào)整):
[:content_error, :password, :success, :crash!, :not_implemented, :important, :select, :deprecated, :shell_error!, :confirm, :build_failure!, :test_failure!, :abort_with_message!, :verbose, :header, :command, :message, :user_error!, :interactive?, :command_output, :input, :error]