music-player:具有最小化功能的音乐播放器示例,例如SwiftUI中内置的Spotify播放器

上传者: 42181888 | 上传时间: 2022-12-31 01:22:06 | 文件大小: 105.09MB | 文件类型: ZIP
音乐播放器 具有最小化功能的音乐播放器示例,例如SwiftUI中内置的Spotify播放器。 概括 该示例的灵感来自Spotify音乐播放器。 我向自己挑战,要打造一个音乐播放器,可以在SwiftUI中将其最小化。 我使用的主要功能之一是GeometryReader,它返回封装的视图的大小和坐标。 这样,当用户向下滑动时,我就可以计算出何时在迷你播放器中过渡和淡入淡出。 我使用了ViewModel来加载歌曲数据,并创建了一个使用Generics允许我加载所需数据类型的encodeJSON函数。 在这种情况下,称为Song的自定义模型。 该示例在播放歌曲的同时展示了使播放器最小化的功能。 享受!

文件下载

资源详情

[{"title":"( 60 个子文件 105.09MB ) music-player:具有最小化功能的音乐播放器示例,例如SwiftUI中内置的Spotify播放器","children":[{"title":"music-player-main","children":[{"title":"Music Player","children":[{"title":"Assets.xcassets","children":[{"title":"AppIcon.appiconset","children":[{"title":"Contents.json <span style='color:#111;'> 1.55KB </span>","children":null,"spread":false}],"spread":true},{"title":"Group 2.imageset","children":[{"title":"Group 2.png <span style='color:#111;'> 509B </span>","children":null,"spread":false},{"title":"Group 2@3x.png <span style='color:#111;'> 1.04KB </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 379B </span>","children":null,"spread":false},{"title":"Group 2@2x.png <span style='color:#111;'> 863B </span>","children":null,"spread":false}],"spread":true},{"title":"Contents.json <span style='color:#111;'> 63B </span>","children":null,"spread":false},{"title":"AccentColor.colorset","children":[{"title":"Contents.json <span style='color:#111;'> 123B </span>","children":null,"spread":false}],"spread":true},{"title":"Group -1.imageset","children":[{"title":"Group -1.png <span style='color:#111;'> 463B </span>","children":null,"spread":false},{"title":"Group -1@3x.png <span style='color:#111;'> 1.06KB </span>","children":null,"spread":false},{"title":"Group -1@2x.png <span style='color:#111;'> 873B </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 382B </span>","children":null,"spread":false}],"spread":true},{"title":"next.imageset","children":[{"title":"Group -2@2x.png <span style='color:#111;'> 682B </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 382B </span>","children":null,"spread":false},{"title":"Group -2@3x.png <span style='color:#111;'> 824B </span>","children":null,"spread":false},{"title":"Group -2.png <span style='color:#111;'> 429B </span>","children":null,"spread":false}],"spread":true},{"title":"arrow-right.imageset","children":[{"title":"Contents.json <span style='color:#111;'> 391B </span>","children":null,"spread":false},{"title":"arrow-right@2x.png <span style='color:#111;'> 590B </span>","children":null,"spread":false},{"title":"arrow-right.png <span style='color:#111;'> 361B </span>","children":null,"spread":false},{"title":"arrow-right@3x.png <span style='color:#111;'> 625B </span>","children":null,"spread":false}],"spread":true},{"title":"prev.imageset","children":[{"title":"Group 2 Copy.png <span style='color:#111;'> 402B </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 394B </span>","children":null,"spread":false},{"title":"Group 2 Copy@2x.png <span style='color:#111;'> 611B </span>","children":null,"spread":false},{"title":"Group 2 Copy@3x.png <span style='color:#111;'> 760B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"Bundle+.swift <span style='color:#111;'> 791B </span>","children":null,"spread":false},{"title":"ProgressBarView.swift <span style='color:#111;'> 851B </span>","children":null,"spread":false},{"title":"Preview Content","children":[{"title":"Preview Assets.xcassets","children":[{"title":"Contents.json <span style='color:#111;'> 63B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"FileManager+.swift <span style='color:#111;'> 354B </span>","children":null,"spread":false},{"title":"PlayerView.swift <span style='color:#111;'> 8.47KB </span>","children":null,"spread":false},{"title":"nihilore_fragile","children":[{"title":"Nihilore - Fragile - 05 Parade.mp3 <span style='color:#111;'> 5.07MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 09 Katabasis.mp3 <span style='color:#111;'> 12.37MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 04 Healing.mp3 <span style='color:#111;'> 10.97MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - Fragile-logo.jpg <span style='color:#111;'> 209.51KB </span>","children":null,"spread":false},{"title":"cover.jpg <span style='color:#111;'> 1.91MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 10 Same as Sharks.mp3 <span style='color:#111;'> 8.08MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 02 Fictofaction.mp3 <span style='color:#111;'> 8.57MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 08 Past Times.mp3 <span style='color:#111;'> 11.39MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 11 Broken in Two.mp3 <span style='color:#111;'> 10.86MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 01 Oceans Apart.mp3 <span style='color:#111;'> 8.10MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 03 Solitaire.mp3 <span style='color:#111;'> 7.34MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 07 Hailstorm.mp3 <span style='color:#111;'> 8.72MB </span>","children":null,"spread":false},{"title":"Nihilore - Fragile - 06 Drifting.mp3 <span style='color:#111;'> 11.79MB </span>","children":null,"spread":false}],"spread":false},{"title":"HomeViewModel.swift <span style='color:#111;'> 375B </span>","children":null,"spread":false},{"title":"HomeView.swift <span style='color:#111;'> 7.26KB </span>","children":null,"spread":false},{"title":"Music_PlayerApp.swift <span style='color:#111;'> 240B </span>","children":null,"spread":false},{"title":"Song.swift <span style='color:#111;'> 876B </span>","children":null,"spread":false},{"title":"SongListItemView.swift <span style='color:#111;'> 1.22KB </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 1.43KB </span>","children":null,"spread":false},{"title":"Shared","children":[{"title":"Player.swift <span style='color:#111;'> 2.47KB </span>","children":null,"spread":false}],"spread":false},{"title":"songs.json <span style='color:#111;'> 1.75KB </span>","children":null,"spread":false},{"title":"Songs.swift <span style='color:#111;'> 152B </span>","children":null,"spread":false}],"spread":false},{"title":"readme.md <span style='color:#111;'> 806B </span>","children":null,"spread":false},{"title":"Music PlayerTests","children":[{"title":"Music_PlayerTests.swift <span style='color:#111;'> 915B </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 727B </span>","children":null,"spread":false}],"spread":true},{"title":"Music PlayerUITests","children":[{"title":"Music_PlayerUITests.swift <span style='color:#111;'> 1.40KB </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 727B </span>","children":null,"spread":false}],"spread":true},{"title":".gitignore <span style='color:#111;'> 3.08KB </span>","children":null,"spread":false},{"title":"Music Player.xcodeproj","children":[{"title":"project.xcworkspace","children":[{"title":"contents.xcworkspacedata <span style='color:#111;'> 135B </span>","children":null,"spread":false},{"title":"xcshareddata","children":[{"title":"IDEWorkspaceChecks.plist <span style='color:#111;'> 238B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"project.pbxproj <span style='color:#111;'> 34.56KB </span>","children":null,"spread":false},{"title":"xcuserdata","children":[{"title":"jmonroe.xcuserdatad","children":[{"title":"xcschemes","children":[{"title":"xcschememanagement.plist <span style='color:#111;'> 347B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明