mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Voice Chat UI fixes
This commit is contained in:
parent
0606bcf8da
commit
ae2bf3b908
@ -1670,6 +1670,8 @@ public final class VoiceChatController: ViewController {
|
||||
self.contentContainer.view.bounds = initialBounds
|
||||
}, completion: { _ in
|
||||
if self.actionButton.supernode !== self.bottomPanelNode {
|
||||
self.audioOutputNode.isHidden = false
|
||||
self.leaveNode.isHidden = false
|
||||
self.audioOutputNode.layer.removeAllAnimations()
|
||||
self.leaveNode.layer.removeAllAnimations()
|
||||
self.bottomPanelNode.addSubnode(self.audioOutputNode)
|
||||
@ -1906,24 +1908,12 @@ public final class VoiceChatController: ViewController {
|
||||
}
|
||||
|
||||
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
|
||||
// if let callState = self.callState, case .connected = callState.networkState, let muteState = callState.muteState, !muteState.canUnmute {
|
||||
// return false
|
||||
// }
|
||||
// if let recognizer = gestureRecognizer as? UIPanGestureRecognizer {
|
||||
// let location = recognizer.location(in: self.view)
|
||||
// if let view = super.hitTest(location, with: nil) {
|
||||
// if let gestureRecognizers = view.gestureRecognizers, view != self.view {
|
||||
// for gestureRecognizer in gestureRecognizers {
|
||||
// if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer, gestureRecognizer.isEnabled {
|
||||
// if panGestureRecognizer.state != .began {
|
||||
// panGestureRecognizer.isEnabled = false
|
||||
// panGestureRecognizer.isEnabled = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
if gestureRecognizer is DirectionalPanGestureRecognizer {
|
||||
let location = gestureRecognizer.location(in: self.bottomPanelNode.view)
|
||||
if self.audioOutputNode.frame.contains(location) || self.leaveNode.frame.contains(location) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@ -2263,6 +2253,12 @@ public final class VoiceChatController: ViewController {
|
||||
overlayController?.animateOut(reclaim: true, completion: { [weak self] immediate in
|
||||
if let strongSelf = self, immediate {
|
||||
strongSelf.controllerNode.bottomPanelNode.addSubnode(strongSelf.controllerNode.actionButton)
|
||||
strongSelf.controllerNode.bottomPanelNode.addSubnode(strongSelf.controllerNode.audioOutputNode)
|
||||
strongSelf.controllerNode.bottomPanelNode.addSubnode(strongSelf.controllerNode.leaveNode)
|
||||
|
||||
if immediate, let layout = strongSelf.validLayout {
|
||||
strongSelf.containerLayoutUpdated(layout, transition: .immediate)
|
||||
}
|
||||
}
|
||||
})
|
||||
strongSelf.reclaimActionButton = nil
|
||||
|
@ -95,22 +95,22 @@ public final class VoiceChatOverlayController: ViewController {
|
||||
return
|
||||
}
|
||||
|
||||
self.initialLeftButtonPosition = leftButton.position
|
||||
self.initialRightButtonPosition = rightButton.position
|
||||
|
||||
actionButton.update(snap: true, animated: !self.isSlidOffscreen && !self.isButtonHidden)
|
||||
if self.isSlidOffscreen {
|
||||
leftButton.isHidden = false
|
||||
rightButton.isHidden = false
|
||||
leftButton.isHidden = true
|
||||
rightButton.isHidden = true
|
||||
actionButton.layer.sublayerTransform = CATransform3DMakeTranslation(slideOffset, 0.0, 0.0)
|
||||
return
|
||||
} else if self.isButtonHidden {
|
||||
leftButton.isHidden = false
|
||||
rightButton.isHidden = false
|
||||
leftButton.isHidden = true
|
||||
rightButton.isHidden = true
|
||||
actionButton.isHidden = true
|
||||
return
|
||||
}
|
||||
|
||||
self.initialLeftButtonPosition = leftButton.position
|
||||
self.initialRightButtonPosition = rightButton.position
|
||||
|
||||
let center = CGPoint(x: actionButton.frame.width / 2.0, y: actionButton.frame.height / 2.0)
|
||||
leftButton.layer.animatePosition(from: leftButton.position, to: center, duration: 0.15, timingFunction: CAMediaTimingFunctionName.easeOut.rawValue, removeOnCompletion: false, completion: { [weak leftButton] _ in
|
||||
leftButton?.isHidden = true
|
||||
@ -164,6 +164,15 @@ public final class VoiceChatOverlayController: ViewController {
|
||||
actionButton.layer.sublayerTransform = CATransform3DIdentity
|
||||
actionButton.update(snap: false, animated: false)
|
||||
actionButton.position = CGPoint(x: targetPosition.x, y: 268.0 / 2.0)
|
||||
|
||||
leftButton.isHidden = false
|
||||
rightButton.isHidden = false
|
||||
if let leftButtonPosition = self.initialLeftButtonPosition {
|
||||
leftButton.position = CGPoint(x: actionButton.position.x + leftButtonPosition.x, y: actionButton.position.y)
|
||||
}
|
||||
if let rightButtonPosition = self.initialRightButtonPosition {
|
||||
rightButton.position = CGPoint(x: actionButton.position.x + rightButtonPosition.x, y: actionButton.position.y)
|
||||
}
|
||||
completion(true)
|
||||
} else if self.isButtonHidden {
|
||||
actionButton.isHidden = false
|
||||
@ -171,6 +180,15 @@ public final class VoiceChatOverlayController: ViewController {
|
||||
actionButton.layer.sublayerTransform = CATransform3DIdentity
|
||||
actionButton.update(snap: false, animated: false)
|
||||
actionButton.position = CGPoint(x: targetPosition.x, y: 268.0 / 2.0)
|
||||
|
||||
leftButton.isHidden = false
|
||||
rightButton.isHidden = false
|
||||
if let leftButtonPosition = self.initialLeftButtonPosition {
|
||||
leftButton.position = CGPoint(x: actionButton.position.x + leftButtonPosition.x, y: actionButton.position.y)
|
||||
}
|
||||
if let rightButtonPosition = self.initialRightButtonPosition {
|
||||
rightButton.position = CGPoint(x: actionButton.position.x + rightButtonPosition.x, y: actionButton.position.y)
|
||||
}
|
||||
completion(true)
|
||||
} else {
|
||||
self.animating = true
|
||||
@ -204,10 +222,10 @@ public final class VoiceChatOverlayController: ViewController {
|
||||
let center = CGPoint(x: actionButton.frame.width / 2.0, y: actionButton.frame.height / 2.0)
|
||||
|
||||
leftButton.isHidden = false
|
||||
leftButton.layer.animatePosition(from: center, to: leftButtonPosition, duration: 0.25, delay: 0.1, timingFunction: CAMediaTimingFunctionName.easeOut.rawValue, removeOnCompletion: false)
|
||||
leftButton.layer.animatePosition(from: center, to: leftButtonPosition, duration: 0.25, delay: 0.12, timingFunction: CAMediaTimingFunctionName.easeOut.rawValue, removeOnCompletion: false)
|
||||
|
||||
rightButton.isHidden = false
|
||||
rightButton.layer.animatePosition(from: center, to: rightButtonPosition, duration: 0.25, delay: 0.1, timingFunction: CAMediaTimingFunctionName.easeOut.rawValue, removeOnCompletion: false)
|
||||
rightButton.layer.animatePosition(from: center, to: rightButtonPosition, duration: 0.25, delay: 0.12, timingFunction: CAMediaTimingFunctionName.easeOut.rawValue, removeOnCompletion: false)
|
||||
}
|
||||
|
||||
actionButton.update(snap: false, animated: true)
|
||||
|
Loading…
x
Reference in New Issue
Block a user