@ -0,0 +1,53 @@
|
|||||||
|
//
|
||||||
|
// BlurEffectView.swift
|
||||||
|
// IndieMusic
|
||||||
|
//
|
||||||
|
// Created by WenLei on 2023/11/10.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class BlurEffectView: UIView {
|
||||||
|
|
||||||
|
var blurView: UIVisualEffectView = {
|
||||||
|
let blurEffect = UIBlurEffect(style: .systemThickMaterialDark)
|
||||||
|
let blurView = UIVisualEffectView(effect: blurEffect)
|
||||||
|
|
||||||
|
return blurView
|
||||||
|
}()
|
||||||
|
|
||||||
|
var imageView: UIImageView = {
|
||||||
|
let imageView = UIImageView.init(image: UIImage.init(named: "cover"))
|
||||||
|
|
||||||
|
return imageView
|
||||||
|
}()
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
|
||||||
|
makeUI()
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeUI() {
|
||||||
|
addSubview(imageView)
|
||||||
|
addSubview(blurView)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override func layoutSubviews() {
|
||||||
|
super.layoutSubviews()
|
||||||
|
|
||||||
|
imageView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
blurView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
//
|
||||||
|
// PaddingLabel.swift
|
||||||
|
// IndieMusic
|
||||||
|
//
|
||||||
|
// Created by WenLei on 2023/11/10.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class PaddingLabel: UILabel {
|
||||||
|
// var textInsets = UIEdgeInsets.init(top: 10, left: 10, bottom: 10, right: 0) {
|
||||||
|
// didSet { setNeedsDisplay() }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// override func drawText(in rect: CGRect) {
|
||||||
|
// super.drawText(in: rect.inset(by: textInsets))
|
||||||
|
// }
|
||||||
|
|
||||||
|
var circularFillet = true
|
||||||
|
|
||||||
|
var padding = UIEdgeInsets(top: 8, left: 10, bottom: 8, right: 10)
|
||||||
|
override func drawText(in rect: CGRect) {
|
||||||
|
super.drawText(in: rect.inset(by: padding))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
init(padding: UIEdgeInsets = UIEdgeInsets(top: 5, left: 10, bottom: 5, right: 10), frame: CGRect = CGRect.zero) {
|
||||||
|
self.padding = padding
|
||||||
|
super.init(frame: frame)
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override var intrinsicContentSize : CGSize {
|
||||||
|
let superContentSize = super.intrinsicContentSize
|
||||||
|
let width = superContentSize.width + padding.left + padding.right
|
||||||
|
let heigth = superContentSize.height + padding.top + padding.bottom
|
||||||
|
return CGSize(width: width, height: heigth)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func layoutSubviews() {
|
||||||
|
super.layoutSubviews()
|
||||||
|
if circularFillet == true {
|
||||||
|
let h = self.frame.size.height
|
||||||
|
self.layer.cornerRadius = h / 2
|
||||||
|
self.layer.masksToBounds = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,423 @@
|
|||||||
|
//
|
||||||
|
// PlayerView.swift
|
||||||
|
// IndieMusic
|
||||||
|
//
|
||||||
|
// Created by WenLei on 2023/11/10.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class PlayerViewTopBar: UIView {
|
||||||
|
lazy var dropButton: UIButton = {
|
||||||
|
let dropButton = UIButton.init()
|
||||||
|
dropButton.setImage(UIImage.init(named: "play_drop_btn"), for: .normal)
|
||||||
|
|
||||||
|
return dropButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
lazy var segementView: UIView = {
|
||||||
|
let segementView = UIView.init()
|
||||||
|
|
||||||
|
return segementView
|
||||||
|
}()
|
||||||
|
|
||||||
|
lazy var moreButton: UIButton = {
|
||||||
|
let moreButton = UIButton.init()
|
||||||
|
moreButton.setImage(UIImage.init(named: "play_more_btn"), for: .normal)
|
||||||
|
|
||||||
|
return moreButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
|
||||||
|
makeUI()
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeUI() {
|
||||||
|
addSubview(dropButton)
|
||||||
|
addSubview(segementView)
|
||||||
|
addSubview(moreButton)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func layoutSubviews() {
|
||||||
|
super.layoutSubviews()
|
||||||
|
|
||||||
|
|
||||||
|
dropButton.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
moreButton.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(self).offset(-18)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
segementView.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(dropButton.snp.right).offset(10)
|
||||||
|
make.right.equalTo(moreButton.snp.left).offset(-10)
|
||||||
|
make.top.equalTo(self)
|
||||||
|
make.bottom.equalTo(self)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerControlView: UIView {
|
||||||
|
var playModesButton: UIButton = {
|
||||||
|
let playModesButton = UIButton.init()
|
||||||
|
playModesButton.setImage(UIImage.init(named: "play_single_modes_btn"), for: .normal)
|
||||||
|
|
||||||
|
return playModesButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
var lastButton: UIButton = {
|
||||||
|
let lastButton = UIButton.init()
|
||||||
|
lastButton.setImage(UIImage.init(named: "play_last_btn"), for: .normal)
|
||||||
|
|
||||||
|
return lastButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
var playButton: UIButton = {
|
||||||
|
let playButton = UIButton.init()
|
||||||
|
playButton.setImage(UIImage.init(named: "play_pause_btn"), for: .normal)
|
||||||
|
|
||||||
|
return playButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
var nextButton: UIButton = {
|
||||||
|
let nextButton = UIButton.init()
|
||||||
|
nextButton.setImage(UIImage.init(named: "play_next_btn"), for: .normal)
|
||||||
|
|
||||||
|
return nextButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
var listButton: UIButton = {
|
||||||
|
let listButton = UIButton.init()
|
||||||
|
listButton.setImage(UIImage.init(named: "play_list_btn"), for: .normal)
|
||||||
|
|
||||||
|
return listButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
|
||||||
|
|
||||||
|
makeUI()
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeUI() {
|
||||||
|
addSubview(playModesButton)
|
||||||
|
addSubview(lastButton)
|
||||||
|
addSubview(playButton)
|
||||||
|
addSubview(nextButton)
|
||||||
|
addSubview(listButton)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override func layoutSubviews() {
|
||||||
|
super.layoutSubviews()
|
||||||
|
|
||||||
|
|
||||||
|
playButton.snp.makeConstraints { make in
|
||||||
|
make.centerX.equalTo(self)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
lastButton.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(playButton.snp.left).offset(-40)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
playModesButton.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(lastButton.snp.left).offset(-40)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
nextButton.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(playButton.snp.right).offset(40)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
listButton.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(nextButton.snp.right).offset(40)
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerScrollView: UIScrollView {
|
||||||
|
var containerView: UIView = {
|
||||||
|
let containerView = UIView.init()
|
||||||
|
|
||||||
|
return containerView
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
var playerInfoView: PlayerInfoView = {
|
||||||
|
let playerInfoView = PlayerInfoView.init()
|
||||||
|
|
||||||
|
return playerInfoView
|
||||||
|
}()
|
||||||
|
|
||||||
|
var lyricsView: UIView = {
|
||||||
|
let lyricsView = UIView.init()
|
||||||
|
|
||||||
|
return lyricsView
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
|
||||||
|
makeUI()
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeUI() {
|
||||||
|
addSubview(containerView)
|
||||||
|
|
||||||
|
containerView.addSubview(playerInfoView)
|
||||||
|
containerView.addSubview(lyricsView)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func layoutSubviews() {
|
||||||
|
super.layoutSubviews()
|
||||||
|
|
||||||
|
containerView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(self)
|
||||||
|
make.height.equalToSuperview()
|
||||||
|
make.width.greaterThanOrEqualToSuperview()
|
||||||
|
}
|
||||||
|
|
||||||
|
playerInfoView.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(containerView)
|
||||||
|
make.top.equalTo(containerView)
|
||||||
|
make.bottom.equalTo(containerView)
|
||||||
|
make.width.equalTo(BaseDimensions.screenWidth)
|
||||||
|
}
|
||||||
|
|
||||||
|
lyricsView.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(playerInfoView.snp.right)
|
||||||
|
make.top.equalTo(containerView)
|
||||||
|
make.bottom.equalTo(containerView)
|
||||||
|
make.right.equalTo(containerView)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerInfoView: UIView {
|
||||||
|
var coverView: UIImageView = {
|
||||||
|
let coverView = UIImageView.init()
|
||||||
|
coverView.layer.cornerRadius = 6
|
||||||
|
coverView.layer.masksToBounds = true
|
||||||
|
|
||||||
|
return coverView
|
||||||
|
}()
|
||||||
|
|
||||||
|
var pageControl: UIPageControl = {
|
||||||
|
let pageControl = UIPageControl.init()
|
||||||
|
pageControl.numberOfPages = 2
|
||||||
|
|
||||||
|
return pageControl
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var numberLabel: PaddingLabel = {
|
||||||
|
let numberLabel = PaddingLabel.init()
|
||||||
|
numberLabel.font = UIFont.systemFont(ofSize: 12)
|
||||||
|
numberLabel.textColor = .init(hex: 0xFFFFFF)
|
||||||
|
numberLabel.backgroundColor = .init(hex: 0xFFFFFF, alpha: 0.1)
|
||||||
|
// numberLabel.layer.cornerRadius = 25
|
||||||
|
|
||||||
|
|
||||||
|
return numberLabel
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
var titleLabel: UILabel = {
|
||||||
|
let titleLabel = UILabel.init()
|
||||||
|
titleLabel.font = UIFont.systemFont(ofSize: 20, weight: .medium)
|
||||||
|
titleLabel.textColor = .init(hex: 0xFFFFFF, alpha: 0.9)
|
||||||
|
|
||||||
|
return titleLabel
|
||||||
|
}()
|
||||||
|
|
||||||
|
var artistLabel: UILabel = {
|
||||||
|
let artistLabel = UILabel.init()
|
||||||
|
artistLabel.font = UIFont.systemFont(ofSize: 12)
|
||||||
|
artistLabel.textColor = .init(hex: 0xFFFFFF, alpha: 0.6)
|
||||||
|
|
||||||
|
return artistLabel
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
var shareButton: UIButton = {
|
||||||
|
let shareButton = UIButton.init()
|
||||||
|
shareButton.setImage(UIImage.init(named: "play_share_btn"), for: .normal)
|
||||||
|
shareButton.setContentHuggingPriority(.required, for: .horizontal)
|
||||||
|
shareButton.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||||
|
return shareButton
|
||||||
|
|
||||||
|
}()
|
||||||
|
|
||||||
|
var likeButton: UIButton = {
|
||||||
|
let likeButton = UIButton.init()
|
||||||
|
likeButton.setImage(UIImage.init(named: "play_like_on"), for: .normal)
|
||||||
|
likeButton.setContentHuggingPriority(.required, for: .horizontal)
|
||||||
|
likeButton.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||||
|
|
||||||
|
return likeButton
|
||||||
|
}()
|
||||||
|
|
||||||
|
var playerSlider: UISlider = {
|
||||||
|
let playerSlider = UISlider.init()
|
||||||
|
playerSlider.tintColor = .white
|
||||||
|
|
||||||
|
|
||||||
|
return playerSlider
|
||||||
|
}()
|
||||||
|
|
||||||
|
|
||||||
|
var startTimeLabel: UILabel = {
|
||||||
|
let startTimeLabel = UILabel.init()
|
||||||
|
startTimeLabel.font = UIFont.systemFont(ofSize: 12)
|
||||||
|
startTimeLabel.textColor = .init(hex: 0xFFFFFF, alpha: 0.4)
|
||||||
|
|
||||||
|
return startTimeLabel
|
||||||
|
}()
|
||||||
|
|
||||||
|
var endTimeLabel: UILabel = {
|
||||||
|
let endTimeLabel = UILabel.init()
|
||||||
|
endTimeLabel.font = UIFont.systemFont(ofSize: 12)
|
||||||
|
endTimeLabel.textColor = .init(hex: 0xFFFFFF, alpha: 0.4)
|
||||||
|
|
||||||
|
return endTimeLabel
|
||||||
|
}()
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
|
||||||
|
makeUI()
|
||||||
|
|
||||||
|
numberLabel.text = "VOL 1092"
|
||||||
|
titleLabel.text = "fdsfds"
|
||||||
|
artistLabel.text = "1233321"
|
||||||
|
startTimeLabel.text = "00:00"
|
||||||
|
endTimeLabel.text = "00:00"
|
||||||
|
|
||||||
|
coverView.backgroundColor = .gray
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeUI() {
|
||||||
|
addSubview(coverView)
|
||||||
|
addSubview(pageControl)
|
||||||
|
|
||||||
|
addSubview(numberLabel)
|
||||||
|
addSubview(titleLabel)
|
||||||
|
addSubview(artistLabel)
|
||||||
|
addSubview(shareButton)
|
||||||
|
addSubview(likeButton)
|
||||||
|
addSubview(playerSlider)
|
||||||
|
addSubview(startTimeLabel)
|
||||||
|
addSubview(endTimeLabel)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func layoutSubviews() {
|
||||||
|
super.layoutSubviews()
|
||||||
|
|
||||||
|
coverView.snp.makeConstraints { make in
|
||||||
|
make.top.equalTo(self).offset(10)
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.right.equalTo(self).offset(-18)
|
||||||
|
make.height.equalTo(coverView.snp.width)
|
||||||
|
}
|
||||||
|
|
||||||
|
pageControl.snp.makeConstraints { make in
|
||||||
|
make.centerX.equalTo(self)
|
||||||
|
make.top.equalTo(coverView.snp.bottom).offset(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
numberLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.top.equalTo(pageControl.snp.bottom).offset(18)
|
||||||
|
}
|
||||||
|
|
||||||
|
shareButton.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(self).offset(-18)
|
||||||
|
make.top.equalTo(pageControl.snp.bottom).offset(55)
|
||||||
|
}
|
||||||
|
|
||||||
|
likeButton.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(shareButton.snp.left).offset(-15)
|
||||||
|
make.top.equalTo(pageControl.snp.bottom).offset(55)
|
||||||
|
}
|
||||||
|
|
||||||
|
titleLabel.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(likeButton.snp.left).offset(-10)
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.top.equalTo(numberLabel.snp.bottom).offset(15)
|
||||||
|
}
|
||||||
|
|
||||||
|
artistLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.right.equalTo(likeButton.snp.left).offset(-10)
|
||||||
|
make.top.equalTo(titleLabel.snp.bottom).offset(3)
|
||||||
|
}
|
||||||
|
|
||||||
|
playerSlider.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.right.equalTo(self).offset(-18)
|
||||||
|
make.top.equalTo(artistLabel.snp.bottom).offset(18)
|
||||||
|
}
|
||||||
|
|
||||||
|
startTimeLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(self).offset(18)
|
||||||
|
make.top.equalTo(playerSlider.snp.bottom).offset(3)
|
||||||
|
make.bottom.equalTo(self).offset(-10)
|
||||||
|
}
|
||||||
|
|
||||||
|
endTimeLabel.snp.makeConstraints { make in
|
||||||
|
make.right.equalTo(self).offset(-18)
|
||||||
|
make.top.equalTo(playerSlider.snp.bottom).offset(3)
|
||||||
|
make.bottom.equalTo(self).offset(-10)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "cover.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 81 KiB |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "cover.jpg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 54 KiB |
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_drop_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 267 B |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_last_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 963 B |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_like_on.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_list_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 950 B |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_more_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 450 B |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_next_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 963 B |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_pause_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 530 B |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_share_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "play_single_modes_btn.svg",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 1.3 KiB |