付費限定

🖥️練習用 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 也都寫出來了。方便有些元件要直接拿這些變數來用。

機殼的光澤

創作者正在準備中
請加入 13+ 了解最新動態!
留言
avatar-img
13+
3.5K會員
161內容數
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
閒著發慌滑手機的時候,......你也能認識太陽!
Thumbnail
閒著發慌滑手機的時候,......你也能認識太陽!
Thumbnail
這篇文章主要介紹了Mac維修中常見的問題和解決方法,包括主機/主機板更換、畫面顯示異常、電池更換、重灌、容量擴充、資料救援、螢幕維修、鍵盤維修、喇叭維修、風扇維修、開關機問題、鏡頭故障、觸控板故障等。
Thumbnail
這篇文章主要介紹了Mac維修中常見的問題和解決方法,包括主機/主機板更換、畫面顯示異常、電池更換、重灌、容量擴充、資料救援、螢幕維修、鍵盤維修、喇叭維修、風扇維修、開關機問題、鏡頭故障、觸控板故障等。
Thumbnail
將我的 Macbook Pro 換成 Steam Deck OLED
Thumbnail
將我的 Macbook Pro 換成 Steam Deck OLED
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
如果你已經習慣使用 Mac 蘋果電腦, 像是 MacBook Air、Macbook Pro 或是 iMac 來工作、 娛樂或查資料的話,那你一定很熟悉基本操作, 但其實還有蘋果電腦還有非常多隱藏的 Mac 功能與實用小技巧喔! 不論是應用在文書、辦公等等都非常實用,讓你在使用上更方便更有效
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
《小品-光影練習》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品-光影練習》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
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
《小品》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《小品》 照夜白電腦繪圖作品 使用軟體:Photoshop
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News