iOS15 UIButton新外觀設定

閱讀時間約 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()
    }


快樂改按鈕😎

5會員
30內容數
紀錄iOS開發上遇到的問題或是一些流程筆記。主要都是Swift。
留言0
查看全部
發表第一個留言支持創作者!
Michelle Chen的沙龍 的其他內容
MVC v.s. MVVM 學習筆記
閱讀時間約 3 分鐘
iOS常用的Design Pattern
閱讀時間約 10 分鐘
iOS開發:選取&顯示GIF的方法
閱讀時間約 8 分鐘
Swift字串的比較
閱讀時間約 4 分鐘
你可能也想看
ios 專屬 "地震預警"app ,你下載了嗎?在我打字的當下還在不停地搖晃,辛苦花蓮的朋友了,今晚肯定不好過。 一個大地震發生後,在接下來的數天、數週甚至數個月內,都有機會發生餘震。因此希望在台灣的朋友,或是你身邊如果剛好有外國朋友,請提醒他們接下來容易有餘震,請多注意。 安卓一堆地震app,ios系統呢? 由於ios的app開發成本
Thumbnail
avatar
Kevin_malamute |凱文-馬拉穆
2024-04-22
熱騰騰的蘋果更新來了!IOS17.4新功能懶人包蘋果剛在6號深夜推出了iOS 17.4更新,帶來一堆新功能!iOS 17.4給我們帶來了十大新功能和修復,包括一些可愛的新表情符號,還有iPhone 15設定裡電池介面的更新等等,接下來我們來細說這些更新亮點!
Thumbnail
avatar
一灘爛泥
2024-03-11
iOS 18終於來了!到底該不該更新?2023年全球AI成為熱門話題,Google、Samsung等手機品牌相繼推出了他們的「AI手機」。作為手機巨頭之一的蘋果,當然不會放棄這塊大餅。傳言和蘋果執行長庫克本人的言論都指向2024年將是蘋果將推出AI產品,預計iOS 18將帶來重大更新。
Thumbnail
avatar
小綠同學
2024-02-26
iOS 17.3 大改版!5大改版重點都在這!蘋果於1月25日正式推出 iOS 17.3 正式更新,這可視為 iOS 17 的第三次重大改版。這次更新引入了全新的遭竊裝置防護功能。同時,iOS 17.3 還新增了一些令人期待的功能,包括在 Apple Music 中共享播放列表、特別為慶祝黑人歷史和文化而設計的統一背景桌布等。
Thumbnail
avatar
小綠同學
2024-02-05
[Nuxt3] 如何支援 iOS13 InApp WebView前言 近期用 Nuxt3 開發內嵌於 iOS、Android App 的網頁,並且要支援到 iOS13 版本。 測試時發現 Nuxt3 在 iOS13 功能會無法正常執行,因此順手記錄這個踩坑過程…XD 第一坑 Nuxt3 Announcing Nuxt 3 officially suppo
Thumbnail
avatar
Andy Tsou
2023-12-24
iOS Unlеashеd: Whеrе Tеchnology Mееts Elеgancе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
avatar
ashwini mary
2023-12-20
iOS的官方ChatGPT上線,plus會員無限制使用iOS的官方ChatGPT上線,plus會員無限制使用,相比每三小時25條,那可真是笑暈在廁所了。 如果有需要安裝註冊教程可以評論去留個言,我看看人多就出一個教程
Thumbnail
avatar
男子漢聊AI
2023-10-18
iOS15測試發文目前看起來都沒什麼問題。
Thumbnail
avatar
四季
2021-12-20
IOS 15 懶人包/一次看完目前公開資訊    這個月IOS 15就預計要更新了~或許還是有很多人看不懂這次IOS 15更新的內容到底是什麼.為了讓大家能迅速了解這次更新的重點,我們簡單介紹下這次更新的內容究竟有哪些吧~     事先說明,本文章只是提供個懶人包讓大家快速了解IOS 15的消息,如果想知道具體更新的內容請至蘋果官網了解~
Thumbnail
avatar
皓哥3C & 育哥電腦
2021-09-13
蘋果 iOS14 讓臉書廣告大更新!安卓也要讓 Google Play 更安心! 文、圖/潮網科技提供   蘋果iOS14的新隱私政策ATT,讓用戶選擇是否提供廣告識別碼(IDFA)給App,受衝擊的臉書提供最新指引給廣告主: 一、iOS14.5更新後APP事件該採取的兩項行動          1. 應用程式事件需回傳OS/iOS版本的參
Thumbnail
avatar
廣告雜誌
2021-06-01