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()
    }


快樂改按鈕😎

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
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
這個系列的教學會列出基本上所有常見的造型和一些基礎 , 讓各位可以自行搭配造型~在這個第五篇呢 , 我們會來一起了解: 常見的按鈕樣式特性,怎麼使用他們,他們的作用是甚麼。讓我們一起了解如何自訂滑鼠以及使用常見的按鈕樣式特性,學會讓按鈕播放音效,切換滑鼠造型,以及避免圖片透明的地方被點擊到。
我自己是希望可以製作iOS app來更好存放我的文章, 更進階一點,可以變成直接錄音後, 照我設定的方式轉換成文檔,讓iPhone變成我更強的助手。 感覺有很多可以探索,用時間慢慢累積經驗。
Thumbnail
iOS 17.5 正式版上架更新日預測| iPhone 早前在4月初發表了開發者測試版 iOS 17.5 Beta , 為手機帶來很多新功能及細節改良, 那一般用戶幾時才可以正式用到 iOS 17.5 ?當中又有甚麼吸引、實用新功能呢? 「天氣」桌面工具 iOS 17.5 微調了桌
Thumbnail
iPhone 最新作業系統 iOS 18 控制中心大更新,預設有常用功能、音樂播放器、連線控制三個頁面,並允許使用者自訂頁面,可以直接在控制中心管理所需的功能、調整位置和選擇尺寸。
Thumbnail
Apple 最新的系統系列,在今天台灣時間 11 日凌晨正式亮相了,只能說這波 AI 操作真的有點厲害啊。
Thumbnail
10個今年WWDC,蘋果把AI功能導入IOS之後的新功能
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
本課程學習如何修改按鈕外觀的方法,透過調整背景屬性和形狀。我們新增了四種背景顏色,修改每個按鈕的外觀。完成後,呈現不同按鈕風格。
Thumbnail
生活忙碌...結果這個系列文已經被我拖延成「轉換iOS四個月」的心得了🤣。不過就像使用所有產品的經驗,也許此時更適合為此系列做完結。畢竟最初使用的新鮮感已經被熟悉的穩定感取代,iOS及其生態中各項app已經穩定的融入我的生活中。 那麼就來談談換到iPhone 15後我個人觀察到的幾點好壞。 M
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
這個系列的教學會列出基本上所有常見的造型和一些基礎 , 讓各位可以自行搭配造型~在這個第五篇呢 , 我們會來一起了解: 常見的按鈕樣式特性,怎麼使用他們,他們的作用是甚麼。讓我們一起了解如何自訂滑鼠以及使用常見的按鈕樣式特性,學會讓按鈕播放音效,切換滑鼠造型,以及避免圖片透明的地方被點擊到。
我自己是希望可以製作iOS app來更好存放我的文章, 更進階一點,可以變成直接錄音後, 照我設定的方式轉換成文檔,讓iPhone變成我更強的助手。 感覺有很多可以探索,用時間慢慢累積經驗。
Thumbnail
iOS 17.5 正式版上架更新日預測| iPhone 早前在4月初發表了開發者測試版 iOS 17.5 Beta , 為手機帶來很多新功能及細節改良, 那一般用戶幾時才可以正式用到 iOS 17.5 ?當中又有甚麼吸引、實用新功能呢? 「天氣」桌面工具 iOS 17.5 微調了桌
Thumbnail
iPhone 最新作業系統 iOS 18 控制中心大更新,預設有常用功能、音樂播放器、連線控制三個頁面,並允許使用者自訂頁面,可以直接在控制中心管理所需的功能、調整位置和選擇尺寸。
Thumbnail
Apple 最新的系統系列,在今天台灣時間 11 日凌晨正式亮相了,只能說這波 AI 操作真的有點厲害啊。
Thumbnail
10個今年WWDC,蘋果把AI功能導入IOS之後的新功能
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
本課程學習如何修改按鈕外觀的方法,透過調整背景屬性和形狀。我們新增了四種背景顏色,修改每個按鈕的外觀。完成後,呈現不同按鈕風格。
Thumbnail
生活忙碌...結果這個系列文已經被我拖延成「轉換iOS四個月」的心得了🤣。不過就像使用所有產品的經驗,也許此時更適合為此系列做完結。畢竟最初使用的新鮮感已經被熟悉的穩定感取代,iOS及其生態中各項app已經穩定的融入我的生活中。 那麼就來談談換到iPhone 15後我個人觀察到的幾點好壞。 M