@ -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 |