付費限定

🖥️練習用 SwiftUI 畫 Mac mini:正面

更新 發佈閱讀 13 分鐘

接續前篇,繼續畫 Mac mini M4 的正面。

這一面有幾個挑戰:

  1. 機殼的光澤
  2. 機殼上的插孔及電源燈
  3. 底部的散熱孔

這是我的實作與 Preview 截圖:

MacminiM4SideView 與 Preview

MacminiM4SideView 與 Preview

程式碼如下:

import SwiftUI

struct MacminiM4SideView: View {
private let bodyWidth = 512.0
private let bodyAspectRatio = 3.0
private var bodyHeight: Double {
bodyWidth / bodyAspectRatio
}

var body: some View {
VStack(spacing: 0) {
chassis
vent
}
}

@ViewBuilder
private var chassis: some View {
Rectangle()
.foregroundStyle(
LinearGradient(
stops: [
.init(color: Color(white: 0.7), location: 0.0),
.init(color: Color(white: 0.9), location: 0.1),
.init(color: Color(white: 0.9), location: 0.9),
.init(color: Color(white: 0.7), location: 1.0),
],
startPoint: .leading,
endPoint: .trailing
)
)
.aspectRatio(bodyAspectRatio, contentMode: .fit)
.frame(width: bodyWidth)
.overlay {
HStack {
Spacer()

HStack(spacing: bodyWidth / 16) {
usbCPort
usbCPort
}

Spacer()
Spacer()

HStack(spacing: bodyWidth / 16) {
powerIndicator
audioPort
}

Spacer()
}
.offset(y: bodyHeight / 8)
}
}

@ViewBuilder
private var usbCPort: some View {
Capsule()
.aspectRatio(1 / 3.5, contentMode: .fit)
.frame(height: bodyHeight / 5)
}

@ViewBuilder
private var powerIndicator: some View {
Circle()
.foregroundStyle(Color(white: 1))
.frame(height: bodyHeight / 20)
}

@ViewBuilder
private var audioPort: some View {
Circle()
.foregroundStyle(Color.black)
.frame(height: bodyHeight / 10)
}

@ViewBuilder
private var vent: some View {
Rectangle()
.frame(width: bodyWidth * 0.8, height: bodyHeight * 0.2)
.rotation3DEffect(.degrees(-60), axis: (x: 1, y: 0, z: 0))
.offset(y: bodyHeight / -22)
.foregroundStyle(
LinearGradient(
colors:
Array(
repeating: [Color.black, Color.black.opacity(0.8)],
count: 32
)
.flatMap { $0 },
startPoint: .leading,
endPoint: .trailing
)
)
}
}

#Preview("Side View") {
MacminiM4SideView()
}

我們一樣會用到前一篇提到的 bodyWidth 技巧,並且把 bodyAspectRatio 跟計算的 bodyHeight 也都寫出來了。方便有些元件要直接拿這些變數來用。

機殼的光澤

以行動支持創作者!付費即可解鎖
本篇內容共 4904 字、0 則留言,僅發佈於✍️ 學習 SwiftUI你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
留言分享你的想法!
avatar-img
13+
2.0K會員
118內容數
13 以 10+ 年 iOS 開發經驗為基礎撰寫,助你在 AI 時代成為更有自信的技術工作者。 ❤️ 支持 13 創作! 🤖 AI 工具實戰經驗與深度思考 🧠 軟體開發思維、職涯發展建議 💡 實用技巧與踩坑經驗分享 😔 開發者身心健康與職業傷害
13+的其他內容
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
2025/09/15
Swift Dependencies 的語法設計受到 SwiftUI Environment 啟發,兩者的宣告方式幾乎完全相同。透過互相對照,讓你一次學會兩種機制。
Thumbnail
2025/09/15
Swift Dependencies 的語法設計受到 SwiftUI Environment 啟發,兩者的宣告方式幾乎完全相同。透過互相對照,讓你一次學會兩種機制。
Thumbnail
看更多
你可能也想看
Thumbnail
搬家不只添購必需品,更能透過蝦皮分潤計畫賺取零用金!本文分享近期搬家時添購的各種實用好物,包含多功能工作桌、電競椅、氣炸烤箱、收納神器等,並詳述如何透過蝦皮雙 11 活動聰明購物、善用優惠,同時利用分潤機制將敗家行為轉化為被動收入,推薦給想聰明消費又想賺額外收入的你!
Thumbnail
搬家不只添購必需品,更能透過蝦皮分潤計畫賺取零用金!本文分享近期搬家時添購的各種實用好物,包含多功能工作桌、電競椅、氣炸烤箱、收納神器等,並詳述如何透過蝦皮雙 11 活動聰明購物、善用優惠,同時利用分潤機制將敗家行為轉化為被動收入,推薦給想聰明消費又想賺額外收入的你!
Thumbnail
貓奴每月進貢的時間又來啦! 身為專業貢品官,我從蝦皮搜尋各種零食,只為取悅家中三位貓主子!結果究竟會是龍心大悅,亦或是冷眼相待,就讓我們繼續看下去~
Thumbnail
貓奴每月進貢的時間又來啦! 身為專業貢品官,我從蝦皮搜尋各種零食,只為取悅家中三位貓主子!結果究竟會是龍心大悅,亦或是冷眼相待,就讓我們繼續看下去~
Thumbnail
📢 精選 Apple 3C 皮革配件 折扣專區 📌爲科技生活保有手感與溫度 #Pp貓 #Apple #蘋果 #蘋果手機 #精選 #3C #皮革 #配件 #皮革配件 #優惠 #優惠專區 #折扣 #折扣專區 #Alto #義大利 (😁喜歡我的分享內容,請幫我點擊看一下~謝謝!) ⬇️說明
Thumbnail
📢 精選 Apple 3C 皮革配件 折扣專區 📌爲科技生活保有手感與溫度 #Pp貓 #Apple #蘋果 #蘋果手機 #精選 #3C #皮革 #配件 #皮革配件 #優惠 #優惠專區 #折扣 #折扣專區 #Alto #義大利 (😁喜歡我的分享內容,請幫我點擊看一下~謝謝!) ⬇️說明
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
閒著發慌滑手機的時候,......你也能認識太陽!
Thumbnail
閒著發慌滑手機的時候,......你也能認識太陽!
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
這篇文章主要介紹了Mac維修中常見的問題和解決方法,包括主機/主機板更換、畫面顯示異常、電池更換、重灌、容量擴充、資料救援、螢幕維修、鍵盤維修、喇叭維修、風扇維修、開關機問題、鏡頭故障、觸控板故障等。
Thumbnail
這篇文章主要介紹了Mac維修中常見的問題和解決方法,包括主機/主機板更換、畫面顯示異常、電池更換、重灌、容量擴充、資料救援、螢幕維修、鍵盤維修、喇叭維修、風扇維修、開關機問題、鏡頭故障、觸控板故障等。
Thumbnail
將我的 Macbook Pro 換成 Steam Deck OLED
Thumbnail
將我的 Macbook Pro 換成 Steam Deck OLED
Thumbnail
《小品》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品-光影練習》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品-光影練習》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品分享》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品分享》 照夜白電腦繪圖作品 使用軟體:Photoshop
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News