添加捏合手势

This commit is contained in:
bluesea 2024-04-22 17:56:08 +08:00
parent f0528c6e7a
commit 1f1d2282e9
7 changed files with 102 additions and 21 deletions

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "pause.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "play.png",
"filename" : "play (1).png",
"idiom" : "universal",
"scale" : "1x"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -37,40 +37,47 @@ class ZZHCustomPlayer: UIView {
var playerIsSeeking:Bool = false//
//maskview
var timerForMaskView:Timer?//
var temScale:CGFloat = 1.0
var currentScale:CGFloat = 1.0//
//ui
var playerLayerBgView:UIView?
var avPlayer:AVPlayer?
var avPlayerLayer:AVPlayerLayer?
var timeSlider:ZZHCustomSlider?
var prePlayingState:Bool = true // ,player,便
var prePlayingState:Bool = true {// ,player,便
didSet {
if(prePlayingState){
playBtn.setImage(UIImage(named: "custom_pauseBtn"), for: .normal)
}
else{
playBtn.setImage(UIImage(named: "custom_playBtn"), for: .normal)
}
}
}
let playerPauseBgColor:UIColor = UIColor(r: 20, g: 20, b: 20, a: 0.2)//
lazy var maskPlayerView:UIView? = {//
let bgView = UIView()
bgView.isHidden = true
bgView.backgroundColor = playerPauseBgColor
bgView.addSubview(self.playBtn)
bgView.addSubview(self.playStateImgView)
self.playStateImgView.snp.makeConstraints { make in
self.playBtn.snp.makeConstraints { make in
make.centerX.centerY.equalToSuperview()
make.width.height.equalTo(80)
}
let btn = UIButton()
bgView.addSubview(btn)
btn.addTarget(self, action: #selector(playOrPause(sender: )), for: .touchUpInside)
btn.snp.makeConstraints { make in
make.left.top.right.bottom.equalToSuperview()
}
return bgView
}()
lazy var playStateImgView:UIImageView = {
let imgView = UIImageView()
imgView.image = UIImage(named: "custom_playBtn")
return imgView
lazy var playBtn:UIButton = {
let btn = UIButton()
btn.addTarget(self, action: #selector(playOrPause(sender: )), for: .touchUpInside)
btn.setImage(UIImage(named: "custom_playBtn"), for: .normal)
return btn
}()
deinit {
@ -109,9 +116,18 @@ class ZZHCustomPlayer: UIView {
playerLayerBgView!.layer.addSublayer(avPlayerLayer!)
playerLayerBgView?.backgroundColor = UIColor.clear
self.maskPlayerView?.frame = avPlayerLayer!.frame
playerLayerBgView?.addSubview(maskPlayerView!)
//
let mpBgView = UIView(frame: avPlayerLayer!.frame)
playerLayerBgView?.addSubview(mpBgView)
self.maskPlayerView?.frame = mpBgView.bounds
mpBgView.addSubview(maskPlayerView!)
let tgr = UITapGestureRecognizer(target: self, action: #selector(tapPlayerMaskView(sender: )))
mpBgView.addGestureRecognizer(tgr)
let pgr = UIPinchGestureRecognizer(target: self, action: #selector(panPlayerMaskView(sender: )))
mpBgView.addGestureRecognizer(pgr)
timeSlider = ZZHCustomSlider(frame: .zero)
@ -197,6 +213,8 @@ class ZZHCustomPlayer: UIView {
print("暂停...")
play(false)
}
iniTimerForMaskView()
}
//使play
@ -210,15 +228,57 @@ class ZZHCustomPlayer: UIView {
self.avPlayer?.pause()
}
updatePlayMaskView(value)
}
//
func updatePlayMaskView(_ value:Bool) {
playStateImgView.isHidden = value
self.maskPlayerView?.backgroundColor = value ? .clear : playerPauseBgColor
maskPlayerView?.isHidden = value
if value == false {
iniTimerForMaskView()
}
else {
resetTimerForMaskView()
}
}
func iniTimerForMaskView() {
resetTimerForMaskView()
timerForMaskView = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(hidenMaskViewTimerAction(sender: )), userInfo: nil, repeats: false)
RunLoop.main.add(timerForMaskView!, forMode: .common)
}
func resetTimerForMaskView() {
if let td = timerForMaskView {
td.invalidate()
timerForMaskView = nil
}
}
@objc func hidenMaskViewTimerAction(sender:CADisplayLink) {
maskPlayerView?.isHidden = true
resetTimerForMaskView()
}
//player maskview
@objc func tapPlayerMaskView(sender:UITapGestureRecognizer) {
updatePlayMaskView(!(maskPlayerView!.isHidden))
}
// playermaskview
@objc func panPlayerMaskView(sender:UIPinchGestureRecognizer) {
if sender.state == .began {
temScale = 1.0
}
currentScale = currentScale - (temScale - sender.scale)
currentScale = min(currentScale, 1.5)
currentScale = max(currentScale, 0.5)
temScale = sender.scale
print("\(sender.scale) currentScale....\(currentScale)")
}
//slider ui