iOS15 UIButton新外觀設定

更新於 2024/06/07閱讀時間約 8 分鐘

iOS15新出的按鈕外觀設定,變成像吃設定檔的方式
在一些圓角設定、圖片換位置好像有比較好用😗

用法

button.configuration = plainConfig
button.updateConfiguration() // 有需要更新的話

普通按鈕

raw-image
 let plainConfig: UIButton.Configuration = {
        // 普通按鈕
        var config = UIButton.Configuration.plain()
        config.title = "我是按鈕"
        return config
    } ()


圓角按鈕

raw-image
config.cornerStyle = .capsule


完整code(圓角+背景填充+圖片放右邊)

   let corneredConfig: UIButton.Configuration = {
        // 背景填充
        var config = UIButton.Configuration.filled()
        config.baseBackgroundColor = .systemMint
        // 圓角設定
        config.cornerStyle = .capsule
        // 設定圖片
        config.image = UIImage(systemName: "paperplane")
        // 圖片&標題對應位置
        config.imagePlacement = .trailing
        // 圖片&標題距離
        config.imagePadding = 5.0
        // 設定標題字型顏色

        var titleAttributes = AttributeContainer()
        titleAttributes.foregroundColor = UIColor.black
        titleAttributes.font = UIFont.systemFont(ofSize: 15.0)

        
        let title = AttributedString("送出", attributes: titleAttributes)
        config.attributedTitle = title
        return config

    } ()

不同CornerStyle

CornerStyle

CornerStyle

預設是Dynamic,會隨著dynamic字型改變。測試了一下大中小type

好像大圓角比較明顯,另外兩個差不多

raw-image

客製化圓角

raw-image


 config.background.cornerRadius = 15.0

邊框按鈕

raw-image
config.background.strokeColor = .systemMint
config.background.strokeWidth = 2.0

圖片換位置

// 圖片&標題對應位置
config.imagePlacement = .trailing
// 圖片&標題距離
config.imagePadding = 5.0

不同ImagePlacement

raw-image
raw-image


效果還不錯,all和leading看起來是一樣的

覺得這是最棒的改變,以前改個圖片位置超麻煩,用EdgeInset改來改去🙁

選取效果變化

raw-image


先做一個普通的邊框按鈕設定

    var borderedConfig: UIButton.Configuration = {
        var config = UIButton.Configuration.plain()
        config.background.backgroundColor = .white
        config.cornerStyle = .capsule
        config.image = UIImage(systemName: "paperplane")?.withTintColor(.systemMint, renderingMode: .alwaysOriginal)
        // 圖片&標題距離
        config.imagePadding = 5.0

        // 設定標題字型顏色

        var titleAttributes = AttributeContainer()
        titleAttributes.foregroundColor = UIColor.systemMint
        titleAttributes.font = UIFont.systemFont(ofSize: 15.0)
        let title = AttributedString("送出", attributes: titleAttributes)
        config.attributedTitle = title

        // 設置邊框
        config.background.strokeColor = .systemMint
        config.background.strokeWidth = 2.0

        return config

    } ()

UIConfigurationTextAttributesTransformer改變字體顏色(綠↔️白)

borderedConfig.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { [weak self] incoming in
var outgoing = incoming
if let self, self.plainButton.isSelected {
        outgoing.foregroundColor = UIColor.white
  } else {
outgoing.foregroundColor = UIColor.systemMint
} return outgoing
}

背景變顏色(綠↔️白)

   func updateButtonConfiguration() {
        var config = plainButton.configuration
        if plainButton.isSelected {
            // 設置選中狀態的圖片和背景顏色
            config?.image = UIImage(systemName: "paperplane.fill")?.withTintColor(.white, renderingMode: .alwaysOriginal)
            config?.background.backgroundColor = .systemMint
        } else {
            // 設置正常狀態的圖片和背景顏色
            config?.image = UIImage(systemName: "paperplane")?.withTintColor(.systemMint, renderingMode: .alwaysOriginal)
            config?.background.backgroundColor = .white
        }
        plainButton.configuration = config
    }

點擊事件觸發

   @objc func click() {
        plainButton.isSelected.toggle()
        updateButtonConfiguration()
    }


快樂改按鈕😎

avatar-img
7會員
35內容數
紀錄iOS開發上遇到的問題或是一些流程筆記。主要都是Swift。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Michelle Chen的沙龍 的其他內容
本文介紹如何使用UINavigationBarAppearance調整四種場景下的UI外觀,並探討客製化返回鍵UI又保留返回手勢的做法,可以有效地客製化NavigationBar的外觀,並避免一些NG作法。
這篇文章介紹了 Swift 中字串的比較方法,並討論了使用日期字串進行比較的結果。同時也介紹了數字字串、符號字串和表情符號字串的比較原理。最後指出比較日期字串還是要轉成Date才是安全的做法。
最近碰到個神奇的需求,App啟動時,才要用firebase remoteConfig去決定初始畫面。該文章詳細介紹了在App啟動時如何利用firebase remoteConfig去決定初始畫面,以及解決在推播的情況下造成跳轉無效的問題。
這篇文章主要討論了在 iOS 開發中,使用 UIImagePickerController 來選取 GIF 圖片時會變成靜態截圖的問題,並推薦了使用新的 PHPickerViewController 選取 GIF 檔案。同時提供了一些處理 GIF 圖片的方法。
這篇文章介紹了 iOS 中常用的 Design Patterns,包括 MVC、MVVM、Singleton、Delegation、Observer 等。同時比較了 Delegate 和 Notification 的使用時機。參考資料中還有更多相關資訊。
本文紀錄了MVC和MVVM的差異,包括各自的優缺點和最大差異,並討論了MVVM的商業邏輯應該寫在哪的問題。
本文介紹如何使用UINavigationBarAppearance調整四種場景下的UI外觀,並探討客製化返回鍵UI又保留返回手勢的做法,可以有效地客製化NavigationBar的外觀,並避免一些NG作法。
這篇文章介紹了 Swift 中字串的比較方法,並討論了使用日期字串進行比較的結果。同時也介紹了數字字串、符號字串和表情符號字串的比較原理。最後指出比較日期字串還是要轉成Date才是安全的做法。
最近碰到個神奇的需求,App啟動時,才要用firebase remoteConfig去決定初始畫面。該文章詳細介紹了在App啟動時如何利用firebase remoteConfig去決定初始畫面,以及解決在推播的情況下造成跳轉無效的問題。
這篇文章主要討論了在 iOS 開發中,使用 UIImagePickerController 來選取 GIF 圖片時會變成靜態截圖的問題,並推薦了使用新的 PHPickerViewController 選取 GIF 檔案。同時提供了一些處理 GIF 圖片的方法。
這篇文章介紹了 iOS 中常用的 Design Patterns,包括 MVC、MVVM、Singleton、Delegation、Observer 等。同時比較了 Delegate 和 Notification 的使用時機。參考資料中還有更多相關資訊。
本文紀錄了MVC和MVVM的差異,包括各自的優缺點和最大差異,並討論了MVVM的商業邏輯應該寫在哪的問題。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在我打字的當下還在不停地搖晃,辛苦花蓮的朋友了,今晚肯定不好過。 一個大地震發生後,在接下來的數天、數週甚至數個月內,都有機會發生餘震。因此希望在台灣的朋友,或是你身邊如果剛好有外國朋友,請提醒他們接下來容易有餘震,請多注意。 安卓一堆地震app,ios系統呢? 由於ios的app開發成本
Thumbnail
2023年全球AI成為熱門話題,Google、Samsung等手機品牌相繼推出了他們的「AI手機」。作為手機巨頭之一的蘋果,當然不會放棄這塊大餅。傳言和蘋果執行長庫克本人的言論都指向2024年將是蘋果將推出AI產品,預計iOS 18將帶來重大更新。
Thumbnail
蘋果於1月25日正式推出 iOS 17.3 正式更新,這可視為 iOS 17 的第三次重大改版。這次更新引入了全新的遭竊裝置防護功能。同時,iOS 17.3 還新增了一些令人期待的功能,包括在 Apple Music 中共享播放列表、特別為慶祝黑人歷史和文化而設計的統一背景桌布等。
Thumbnail
前言 近期用 Nuxt3 開發內嵌於 iOS、Android App 的網頁,並且要支援到 iOS13 版本。 測試時發現 Nuxt3 在 iOS13 功能會無法正常執行,因此順手記錄這個踩坑過程…XD 第一坑 Nuxt3 Announcing Nuxt 3 officially suppo
Thumbnail
可能包含敏感內容
In thе fast-pacеd world of tеchnology,  Applе's iOS stands as a bеacon of innovation,  sеamlеssly marrying cutting-еdgе functionalitiеs with an unpara
Thumbnail
iOS的官方ChatGPT上線,plus會員無限制使用,相比每三小時25條,那可真是笑暈在廁所了。 如果有需要安裝註冊教程可以評論去留個言,我看看人多就出一個教程
Thumbnail
    這個月IOS 15就預計要更新了~或許還是有很多人看不懂這次IOS 15更新的內容到底是什麼.為了讓大家能迅速了解這次更新的重點,我們簡單介紹下這次更新的內容究竟有哪些吧~     事先說明,本文章只是提供個懶人包讓大家快速了解IOS 15的消息,如果想知道具體更新的內容請至蘋果官網了解~
Thumbnail
文、圖/潮網科技提供   蘋果iOS14的新隱私政策ATT,讓用戶選擇是否提供廣告識別碼(IDFA)給App,受衝擊的臉書提供最新指引給廣告主: 一、iOS14.5更新後APP事件該採取的兩項行動          1. 應用程式事件需回傳OS/iOS版本的參
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在我打字的當下還在不停地搖晃,辛苦花蓮的朋友了,今晚肯定不好過。 一個大地震發生後,在接下來的數天、數週甚至數個月內,都有機會發生餘震。因此希望在台灣的朋友,或是你身邊如果剛好有外國朋友,請提醒他們接下來容易有餘震,請多注意。 安卓一堆地震app,ios系統呢? 由於ios的app開發成本
Thumbnail
2023年全球AI成為熱門話題,Google、Samsung等手機品牌相繼推出了他們的「AI手機」。作為手機巨頭之一的蘋果,當然不會放棄這塊大餅。傳言和蘋果執行長庫克本人的言論都指向2024年將是蘋果將推出AI產品,預計iOS 18將帶來重大更新。
Thumbnail
蘋果於1月25日正式推出 iOS 17.3 正式更新,這可視為 iOS 17 的第三次重大改版。這次更新引入了全新的遭竊裝置防護功能。同時,iOS 17.3 還新增了一些令人期待的功能,包括在 Apple Music 中共享播放列表、特別為慶祝黑人歷史和文化而設計的統一背景桌布等。
Thumbnail
前言 近期用 Nuxt3 開發內嵌於 iOS、Android App 的網頁,並且要支援到 iOS13 版本。 測試時發現 Nuxt3 在 iOS13 功能會無法正常執行,因此順手記錄這個踩坑過程…XD 第一坑 Nuxt3 Announcing Nuxt 3 officially suppo
Thumbnail
可能包含敏感內容
In thе fast-pacеd world of tеchnology,  Applе's iOS stands as a bеacon of innovation,  sеamlеssly marrying cutting-еdgе functionalitiеs with an unpara
Thumbnail
iOS的官方ChatGPT上線,plus會員無限制使用,相比每三小時25條,那可真是笑暈在廁所了。 如果有需要安裝註冊教程可以評論去留個言,我看看人多就出一個教程
Thumbnail
    這個月IOS 15就預計要更新了~或許還是有很多人看不懂這次IOS 15更新的內容到底是什麼.為了讓大家能迅速了解這次更新的重點,我們簡單介紹下這次更新的內容究竟有哪些吧~     事先說明,本文章只是提供個懶人包讓大家快速了解IOS 15的消息,如果想知道具體更新的內容請至蘋果官網了解~
Thumbnail
文、圖/潮網科技提供   蘋果iOS14的新隱私政策ATT,讓用戶選擇是否提供廣告識別碼(IDFA)給App,受衝擊的臉書提供最新指引給廣告主: 一、iOS14.5更新後APP事件該採取的兩項行動          1. 應用程式事件需回傳OS/iOS版本的參