付費限定

🖥️練習用 SwiftUI 畫 Mac mini:底部

更新 發佈閱讀 13 分鐘

接續前篇,繼續畫 Mac mini M4 的底部。

官網上的圖片是這樣:

raw-image



這一面最大的挑戰,是要怎麼畫出一整圈的散熱孔,以及塑膠殼與金屬機殼的同心圓角。如果你知道方法的話,其實很簡單。但我強烈建議你不要看答案,先自己想想看


這是我的實作與 Preview 截圖:

MacminiM4BottomView 與 Preview

MacminiM4BottomView 與 Preview

練習用的程式碼如下,完整版放在文章最後:

import SwiftUI

struct MacminiM4BottomView: View {
private let bodyWidth = 512.0

var body: some View {
chassis
.aspectRatio(1, contentMode: .fit)
.frame(width: bodyWidth)
.foregroundStyle(Color(white: 0.7))
.overlay {
plasticCover
}
.overlay {
vents
.frame(height: bodyWidth * 0.8)
}
.overlay {
macMiniLogo
}
.overlay(alignment: .topTrailing) {
powerButton
}
}

private var chassis: RoundedRectangle {
RoundedRectangle(cornerRadius: bodyWidth / 4)
}

@ViewBuilder
private var plasticCover: some View {
ContainerRelativeShape()
.aspectRatio(1, contentMode: .fit)
.foregroundStyle(Color(white: 0.2))
.padding(bodyWidth / 50)
.containerShape(chassis)
}

@ViewBuilder
private var vents: some View {
ZStack {
// 試著自行實作
}
}

@ViewBuilder
private var macMiniLogo: some View {
Text("Mac mini")
.font(.system(size: bodyWidth / 12))
.fontWeight(.medium)
.foregroundStyle(Color(white: 0.1))
}

@ViewBuilder
private var powerButton: some View {
Button(
action: {},
label: {
Circle()
.foregroundStyle(Color(white: 0.1))
.frame(width: bodyWidth / 12)
.overlay {
Image(systemName: "power")
.foregroundStyle(Color.white)
}
.padding(bodyWidth / 9)
}
)
}
}

#Preview {
MacminiM4BottomView()
}

macMiniLogo 與 powerButton 相對簡單,我就不做說明了。

塑膠殼與金屬機殼的同心圓角

金屬外殼 chassis 使用 RoundedRectangle。而它裡面一圈的則是黑色的塑膠殼。這部分的小挑戰是,怎樣畫出同心(concentric)的圓角?

我們可以使用 ContainerRelativeShape,並且用 .containerShape 指定它的 container 形狀就等於是 chassis 這個 RoundedRectangle。這樣子我們就不用自行計算內圈的 cornerRadius 要減多少,直接達到同心的效果。

怎麼畫一圈散熱孔

創作者正在準備中
請加入 13+ 了解最新動態!
留言
avatar-img
留言分享你的想法!
avatar-img
13+
2.2K會員
134內容數
13 以 10+ 年 iOS 開發經驗為基礎撰寫,助你在 AI 時代成為更有自信的技術工作者。 ❤️ 支持 13 創作! 🤖 AI 工具實戰經驗與深度思考 🧠 軟體開發思維、職涯發展建議 💡 實用技巧與踩坑經驗分享 😔 開發者身心健康與職業傷害
13+的其他內容
2025/10/16
講解用 SwiftUI 畫 Mac mini M4 正面的實作重點:機殼光澤、插孔與電源燈、以及底部散熱孔的畫法。
Thumbnail
2025/10/16
講解用 SwiftUI 畫 Mac mini M4 正面的實作重點:機殼光澤、插孔與電源燈、以及底部散熱孔的畫法。
Thumbnail
2025/10/14
講解用 SwiftUI 畫 Mac mini M4 俯視圖的實作重點,作為暖身練習。
Thumbnail
2025/10/14
講解用 SwiftUI 畫 Mac mini M4 俯視圖的實作重點,作為暖身練習。
Thumbnail
2025/10/13
學 SwiftUI 排版最單純又有趣的方式,就是拿它來畫東西。我在新手練習時畫過 MacBook Air 鍵盤,最近又為了教學畫了 Mac mini,程式碼都有開源供參考。
Thumbnail
2025/10/13
學 SwiftUI 排版最單純又有趣的方式,就是拿它來畫東西。我在新手練習時畫過 MacBook Air 鍵盤,最近又為了教學畫了 Mac mini,程式碼都有開源供參考。
Thumbnail
看更多
你可能也想看
Thumbnail
金馬獎呼喚大家走進戲院,但Youtube、Netflix已成日常。最新研究顯示,臺灣VOD訂閱戶破700萬,年產值近百億。在全球影視產業洗牌之際,臺灣如何運用國際資金與平臺,將在地故事推向世界?專家點出,理解演算法、克服盜版、制定對接國際的政策是關鍵。
Thumbnail
金馬獎呼喚大家走進戲院,但Youtube、Netflix已成日常。最新研究顯示,臺灣VOD訂閱戶破700萬,年產值近百億。在全球影視產業洗牌之際,臺灣如何運用國際資金與平臺,將在地故事推向世界?專家點出,理解演算法、克服盜版、制定對接國際的政策是關鍵。
Thumbnail
使台劇得以突破過往印象中偶像劇、鄉土劇等範疇,產製更多類型,甚至紅到國外、帶動台灣觀光的最重要原因,便是「隨選串流平台」服務在近十年的蓬勃發展,台灣人愛看串流的程度或許比你我想像中都高,高到連美國電影協會(MPA),都委託Frontier Economics進行研究
Thumbnail
使台劇得以突破過往印象中偶像劇、鄉土劇等範疇,產製更多類型,甚至紅到國外、帶動台灣觀光的最重要原因,便是「隨選串流平台」服務在近十年的蓬勃發展,台灣人愛看串流的程度或許比你我想像中都高,高到連美國電影協會(MPA),都委託Frontier Economics進行研究
Thumbnail
在喧囂的日常中,你是否尋找能代表內心狀態的氣味?臺灣獨立調香師品牌 Sunkronizo 的「一週八日」系列香水,演繹創作者孤獨、沉靜卻自由奔放的內在。其中「星期六 Silent Wild」以綠橄欖、茶香與白麝香交織出清新、寧靜且溫暖的氣息,連結自我與世界的流動,找回那份「只是在」的和諧。
Thumbnail
在喧囂的日常中,你是否尋找能代表內心狀態的氣味?臺灣獨立調香師品牌 Sunkronizo 的「一週八日」系列香水,演繹創作者孤獨、沉靜卻自由奔放的內在。其中「星期六 Silent Wild」以綠橄欖、茶香與白麝香交織出清新、寧靜且溫暖的氣息,連結自我與世界的流動,找回那份「只是在」的和諧。
Thumbnail
📢 精選 Apple 3C 皮革配件 折扣專區 📌爲科技生活保有手感與溫度 #Pp貓 #Apple #蘋果 #蘋果手機 #精選 #3C #皮革 #配件 #皮革配件 #優惠 #優惠專區 #折扣 #折扣專區 #Alto #義大利 (😁喜歡我的分享內容,請幫我點擊看一下~謝謝!) ⬇️說明
Thumbnail
📢 精選 Apple 3C 皮革配件 折扣專區 📌爲科技生活保有手感與溫度 #Pp貓 #Apple #蘋果 #蘋果手機 #精選 #3C #皮革 #配件 #皮革配件 #優惠 #優惠專區 #折扣 #折扣專區 #Alto #義大利 (😁喜歡我的分享內容,請幫我點擊看一下~謝謝!) ⬇️說明
Thumbnail
❗翻蓋手機包 三袋格休閒筆插袋腰掛 手機包 腰包 霹靂包 戰術包 登山包 產品尺寸:20X10X4CM 材料:1680D 牛津布 #Pp貓 #翻蓋手機包 #三袋格休閒筆插袋腰掛 #手機包 #腰包 #霹靂包 #戰術包 #登山包 #工作包 (😁喜歡我的分享內容,請幫我點擊看一下~謝謝!)
Thumbnail
❗翻蓋手機包 三袋格休閒筆插袋腰掛 手機包 腰包 霹靂包 戰術包 登山包 產品尺寸:20X10X4CM 材料:1680D 牛津布 #Pp貓 #翻蓋手機包 #三袋格休閒筆插袋腰掛 #手機包 #腰包 #霹靂包 #戰術包 #登山包 #工作包 (😁喜歡我的分享內容,請幫我點擊看一下~謝謝!)
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
將我的 Macbook Pro 換成 Steam Deck OLED
Thumbnail
將我的 Macbook Pro 換成 Steam Deck OLED
Thumbnail
以往對於macOS系統都不會追求要更新到最新版本,儘管許多人推的macOS Sonoma免費版釋出後,也遲遲沒有升級XD。 直到知道升級後就能透過App Store下載copilot使用GPT-4就衝動更新了!(有聽說部分人的網頁版就可以直接選擇GPT-4?)
Thumbnail
以往對於macOS系統都不會追求要更新到最新版本,儘管許多人推的macOS Sonoma免費版釋出後,也遲遲沒有升級XD。 直到知道升級後就能透過App Store下載copilot使用GPT-4就衝動更新了!(有聽說部分人的網頁版就可以直接選擇GPT-4?)
Thumbnail
不知不覺CX4使用三個月了,so far so good。此前大半年為求輕便,賣掉ProBASE,換成Satechi Aluminum ,一整個感覺︰好慢喔。 Satechi Aluminum 是搬家前從apple官網購入,入手時外型、質感都很好,不便宜呢,差不多500HKD。可是實際使起
Thumbnail
不知不覺CX4使用三個月了,so far so good。此前大半年為求輕便,賣掉ProBASE,換成Satechi Aluminum ,一整個感覺︰好慢喔。 Satechi Aluminum 是搬家前從apple官網購入,入手時外型、質感都很好,不便宜呢,差不多500HKD。可是實際使起
Thumbnail
馬麻我其實是一個手機殼狂人 從一開始使用三星到拿蘋果 看到手機殼都招架不住 就想買 (一個給手機常常換衣服的概念XD)  但一般販售的手機殼都是制式的樣式 自從養了米豆跟米穀後 就想把身邊所有東西 都換成與他們有關的 像是時時刻刻陪著我的感覺
Thumbnail
馬麻我其實是一個手機殼狂人 從一開始使用三星到拿蘋果 看到手機殼都招架不住 就想買 (一個給手機常常換衣服的概念XD)  但一般販售的手機殼都是制式的樣式 自從養了米豆跟米穀後 就想把身邊所有東西 都換成與他們有關的 像是時時刻刻陪著我的感覺
Thumbnail
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
Thumbnail
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News