From c69dc5411cabbedd5114b19b9ceaaa85e0fdc57b Mon Sep 17 00:00:00 2001 From: "Mr.zhou" <1422157428@qq.com> Date: Wed, 5 Jun 2024 11:02:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9b=E9=9D=A2=E7=9A=84=E5=86=8D=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E8=BF=9B=E5=BA=A6=E6=9D=A1=E9=80=82=E7=94=A8?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++--- .../MPPositive_PlayerViewController.swift | 16 +++++ .../Player/MPPositive_PlayerSilder.swift | 58 ++++++++++++++++--- 3 files changed, 75 insertions(+), 15 deletions(-) diff --git a/relax.offline.mp3.music.xcodeproj/project.pbxproj b/relax.offline.mp3.music.xcodeproj/project.pbxproj index 6c36f58..0d930ef 100644 --- a/relax.offline.mp3.music.xcodeproj/project.pbxproj +++ b/relax.offline.mp3.music.xcodeproj/project.pbxproj @@ -1542,9 +1542,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4; - DEVELOPMENT_TEAM = T93S37G27F; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1.0.4.1; + DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = relax.offline.mp3.music/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Musiclax; @@ -1561,7 +1561,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = relax.offline.mp3.music; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1582,9 +1582,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4; - DEVELOPMENT_TEAM = T93S37G27F; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1.0.4.1; + DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = relax.offline.mp3.music/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Musiclax; @@ -1601,7 +1601,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = relax.offline.mp3.music; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift index b97c18d..fec807e 100644 --- a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift +++ b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Player(播放器)/MPPositive_PlayerViewController.swift @@ -101,12 +101,22 @@ class MPPositive_PlayerViewController: MPPositive_BaseViewController, UIViewCont btn.addTarget(self, action: #selector(nextClick(_ :)), for: .touchUpInside) return btn }() + //上一首 private lazy var perviousBtn:UIButton = { let btn = UIButton() btn.setBackgroundImage(UIImage(named: "Player_Pervious'logo"), for: .normal) btn.addTarget(self, action: #selector(previousClick(_ :)), for: .touchUpInside) return btn }() + //活动加载器 + private lazy var activityIndicator:UIActivityIndicatorView = { + let activityIndicator:UIActivityIndicatorView = .init(frame: .init(x: 0, y: 0, width: 66*width, height: 66*width)) + activityIndicator.backgroundColor = .white + activityIndicator.layer.masksToBounds = true + activityIndicator.layer.cornerRadius = 33*width + activityIndicator.color = .black + return activityIndicator + }() //封面View(封面,标题,副标题,收藏,下载,进度条View) private lazy var coverView:MPPositive_PlayerCoverView = .init(frame: .init(x: 0, y: 0, width: screen_Width, height: 480*width)) //歌词View @@ -279,6 +289,12 @@ class MPPositive_PlayerViewController: MPPositive_BaseViewController, UIViewCont make.centerX.equalToSuperview() make.centerY.equalToSuperview().multipliedBy(1.1) } + bottomView.addSubview(activityIndicator) + activityIndicator.snp.makeConstraints { make in + make.center.equalTo(playBtn) + make.width.height.equalTo(playBtn) + } + activityIndicator.startAnimating() bottomView.addSubview(listBtn) listBtn.snp.makeConstraints { make in make.right.equalToSuperview().offset(-20*width) diff --git a/relax.offline.mp3.music/MP/MPPositive/Views/Player/MPPositive_PlayerSilder.swift b/relax.offline.mp3.music/MP/MPPositive/Views/Player/MPPositive_PlayerSilder.swift index 3a1711d..d8d8342 100644 --- a/relax.offline.mp3.music/MP/MPPositive/Views/Player/MPPositive_PlayerSilder.swift +++ b/relax.offline.mp3.music/MP/MPPositive/Views/Player/MPPositive_PlayerSilder.swift @@ -9,7 +9,7 @@ import UIKit ///b面播放器进度条(展示缓存效果,聚焦时进行尺寸变化) class MPPositive_PlayerSilder: UISlider { /// 触控扩展边距 - var hitTestEdgeInsets: UIEdgeInsets = UIEdgeInsets(top: -20, left: -20, bottom: -20, right: -20) + var hitTestEdgeInsets: UIEdgeInsets = UIEdgeInsets(top: -20*width, left: 0, bottom: -20*width, right: 0) /// 原始的Slider大小 var originalFrame: CGRect? //滑块图片 @@ -29,11 +29,11 @@ class MPPositive_PlayerSilder: UISlider { override init(frame:CGRect) { super.init(frame: frame) setUpLayout() + print("调整Slider大小") + originalFrame = self.frame } override func awakeFromNib() { super.awakeFromNib() - print("调整Slider大小") - originalFrame = self.frame } required init?(coder: NSCoder) { @@ -136,11 +136,55 @@ class MPPositive_PlayerSilder: UISlider { override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { //对Slider添加一个边距范围 let largerFrame: CGRect = self.bounds.inset(by: hitTestEdgeInsets) - //检索当前点击点是否在边距范围内 - let isInside = largerFrame.contains(point) - return true + return largerFrame.contains(point) + } + //手势开始时 + override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { + let tracking = super.beginTracking(touch, with: event) + if tracking == true { + //增加高度 + focusOnSlider(true) + }else { + let touchPoint = touch.location(in: self) + // 寻找触摸点在滑动条上的位置所占的相对比例 + let value = self.minimumValue + Float(touchPoint.x / self.bounds.width) * (self.maximumValue - self.minimumValue) + // 更新滑块位置 + self.setValue(value, animated: false) + //让播放器恢复状态 + MP_PlayerManager.shared.setEditProgressEnd(value) + } + return tracking + } + //手势途中 + override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { + //继续滑动 + return super.continueTracking(touch, with: event) + } + //手势继续 + override func endTracking(_ touch: UITouch?, with event: UIEvent?) { + super.endTracking(touch, with: event) + // 手势结束时恢复高度 + focusOnSlider(false) + } + //手势取消 + override func cancelTracking(with event: UIEvent?) { + super.cancelTracking(with: event) + // 手势取消时恢复高度 + focusOnSlider(false) } //当用户焦点汇聚到slider - + private func focusOnSlider(_ focusing:Bool) { + guard let originalFrame = originalFrame else { return } + //动画修改Slider高度 + UIView.animate(withDuration: 0.3) { + if focusing { + //聚焦状态,增加slider高度 + self.transform = CGAffineTransform(scaleX: 1.0, y: 1.5) + }else { + //失去焦点,恢复原状 + self.transform = .identity + } + } + } }