SwiftUI skeuomorphic iOS app

把经典 iPod 的硬件质感、点击转盘和 LCD 屏重新做回 iPhone 上。

`beLikeIpod` 是一个拟物风 iOS 音乐播放器,核心不是“播放一首歌”,而是复刻 iPod Classic 那套设备式交互体验。它把外壳、LCD、点击转盘、Menu 返回、进度调节、音乐导入和桌面 Widget 一起做成了一个完整的原生产品原型。

iOS SwiftUI Skeuomorphic UI Music Player
1:1
IPOD FEEL
LCD
RETRO DISPLAY
CoreData
PLAYLISTS
Widget
REMOTE CONTROL
产品信号
🎛️
交互核心是转盘,不是普通触屏列表
菜单选择、歌曲跳转和进度调节都尽量围绕点击转盘与实体按钮语义来组织。
🖥️
LCD 不是装饰,而是一个完整的信息界面
状态栏、播放序号、标题、进度条和时间显示都按复古 LCD 的视觉逻辑重做。
🎵
复古交互与现代音乐内容结合
支持本地导入音乐、播放列表管理、后台播放与 Widget 控制,不只是一个外观模拟器。

核心亮点

🧱
拟物设备外观
外壳、阴影、材质高光、白色半透明机身和圆角比例都在努力接近经典 iPod Classic 的设备感。
📟
复古 LCD 屏体验
用浅灰背光、扫描线、颗粒感、低对比度文字和等宽字体,模拟早期 LCD 屏的显示质感。
🌀
点击转盘与实体按键
转盘负责滚动和精细进度调节,Menu、Play/Pause、上一首、下一首各自有独立热区和反馈机制。
📦
不仅能看,还能真正用
支持导入本地音乐、维护播放列表、后台播放、锁屏信息与 Widget 远程控制,形成完整播放器闭环。

用户流程

01
进入设备界面
应用首先呈现一个被放在黑白高质感背景中的 iPod 设备主体,而不是普通 App 首页。
02
用转盘浏览菜单
用户通过转盘滚动、Menu 返回和中心键确认,在音乐、播放列表、设置、关于之间移动。
03
进入播放界面
LCD 屏切换到 Now Playing,显示歌曲序号、标题、艺术家、进度条与时间,并支持细粒度调节。
04
扩展到导入和桌面控制
用户可以导入本地音频、维护歌单,并通过 Widget 在主屏幕上继续控制播放状态。

页面展示

Device / 主设备视图
白色机身 + LCD + Click Wheel
Now Playing
1 of 7
花海
周杰伦
0:48 4:21
MENU
▶Ⅱ
把 App 主界面直接做成“设备本体”,是这个项目最明显的产品选择。
Menus / 菜单与播放
LCD 菜单导航 + 播放页细节
Import + Widget
从文件导入音乐与桌面控制
导入音乐
支持从系统文件选择器导入 `m4a / mp3 / aac / wav`,把复古播放器从演示原型推进到可用产品。
从文件导入音乐
复制到 Documents 后自动刷新歌曲库
处理 iCloud 文件、本地文件与权限边界
桌面 Widget
通过 App Groups 同步状态,在桌面小组件里继续控制播放 / 暂停、上一首、下一首。
后台播放
结合锁屏信息、远程控制和后台音频会话,让它不只是一个前台模拟器,而是真正可继续听歌的播放器。

设计侧重点

🪞
拟物不是表皮
从外壳、转盘到 LCD 的信息层级都在围绕“像一台设备”去做,而不是只借一个复古皮肤。
🎚️
手势与热区精细化
为了让转盘、实体按钮、中心键和 LCD 拖拽互不打架,代码里做了大量热区和优先级调整。
📻
复古感和可用性并存
既保留了经典 iPod 的“旋转-确认”记忆,也补上了现代用户对导入、后台播放和 Widget 的期待。
⚙️
工程细节扎得很深
从进度条拖拽、播放状态同步到 Widget 指令和本地文件兼容性,这个项目明显有较多交互和底层细节打磨。

技术实现

Frontend
SwiftUI 拟物播放器界面
主界面直接渲染 iPod 设备本体,并通过多个 SwiftUI 视图拆分 LCD、菜单、播放页和转盘交互层。
Interaction
手势 + 触觉 + 音效反馈
通过转盘手势、按钮热区、触觉服务和音效服务来模拟机械阻尼感与点击确认感。
Data + Audio
Core Data + 本地音频 + Widget
歌单存储使用 Core Data,音频播放和导入围绕本地文件展开,同时接入 Widget 和后台播放能力。