付費限定

🖥️練習用 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 要減多少,直接達到同心的效果。

怎麼畫一圈散熱孔

以行動支持創作者!付費即可解鎖
本篇內容共 5145 字、0 則留言,僅發佈於✍️ 學習 SwiftUI你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
留言分享你的想法!
avatar-img
13+
1.8K會員
107內容數
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
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
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。可是實際使起
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News