adjusted the positions of the buttons for symmetry

This commit is contained in:
Seiike 2025-03-22 13:12:05 +01:00
parent a5f9877474
commit 0a526b2fe9

View file

@ -144,9 +144,9 @@ class CustomMediaPlayerViewController: UIViewController {
addInvisibleControlOverlays() addInvisibleControlOverlays()
setupSubtitleLabel() setupSubtitleLabel()
setupDismissButton() setupDismissButton()
setupQualityButton()
setupMenuButton() setupMenuButton()
setupSpeedButton() setupSpeedButton()
setupQualityButton()
setupSkip85Button() setupSkip85Button()
setupWatchNextButton() setupWatchNextButton()
addTimeObserver() addTimeObserver()
@ -527,20 +527,20 @@ class CustomMediaPlayerViewController: UIViewController {
menuButton = UIButton(type: .system) menuButton = UIButton(type: .system)
menuButton.setImage(UIImage(systemName: "text.bubble"), for: .normal) menuButton.setImage(UIImage(systemName: "text.bubble"), for: .normal)
menuButton.tintColor = .white menuButton.tintColor = .white
if let subtitlesURL = subtitlesURL, !subtitlesURL.isEmpty { if let subtitlesURL = subtitlesURL, !subtitlesURL.isEmpty {
menuButton.showsMenuAsPrimaryAction = true menuButton.showsMenuAsPrimaryAction = true
menuButton.menu = buildOptionsMenu() menuButton.menu = buildOptionsMenu()
} else { } else {
menuButton.isHidden = true menuButton.isHidden = true
} }
controlsContainerView.addSubview(menuButton) controlsContainerView.addSubview(menuButton)
menuButton.translatesAutoresizingMaskIntoConstraints = false menuButton.translatesAutoresizingMaskIntoConstraints = false
guard let sliderView = sliderHostingController?.view else { return }
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
menuButton.bottomAnchor.constraint(equalTo: sliderView.topAnchor), menuButton.topAnchor.constraint(equalTo: controlsContainerView.topAnchor, constant: 20),
menuButton.trailingAnchor.constraint(equalTo: sliderView.trailingAnchor), menuButton.trailingAnchor.constraint(equalTo: qualityButton.leadingAnchor, constant: -20),
menuButton.widthAnchor.constraint(equalToConstant: 40), menuButton.widthAnchor.constraint(equalToConstant: 40),
menuButton.heightAnchor.constraint(equalToConstant: 40) menuButton.heightAnchor.constraint(equalToConstant: 40)
]) ])
@ -550,30 +550,20 @@ class CustomMediaPlayerViewController: UIViewController {
speedButton = UIButton(type: .system) speedButton = UIButton(type: .system)
speedButton.setImage(UIImage(systemName: "speedometer"), for: .normal) speedButton.setImage(UIImage(systemName: "speedometer"), for: .normal)
speedButton.tintColor = .white speedButton.tintColor = .white
speedButton.showsMenuAsPrimaryAction = true speedButton.showsMenuAsPrimaryAction = true
speedButton.menu = speedChangerMenu() speedButton.menu = speedChangerMenu() // If you want the speed menu
controlsContainerView.addSubview(speedButton) controlsContainerView.addSubview(speedButton)
speedButton.translatesAutoresizingMaskIntoConstraints = false speedButton.translatesAutoresizingMaskIntoConstraints = false
guard let sliderView = sliderHostingController?.view else { return } // Pin it at the top, to the left of the subtitles (menu) button.
NSLayoutConstraint.activate([
if menuButton.isHidden { speedButton.topAnchor.constraint(equalTo: controlsContainerView.topAnchor, constant: 20),
NSLayoutConstraint.activate([ speedButton.trailingAnchor.constraint(equalTo: menuButton.leadingAnchor, constant: -20),
speedButton.bottomAnchor.constraint(equalTo: controlsContainerView.bottomAnchor, constant: -50), speedButton.widthAnchor.constraint(equalToConstant: 40),
speedButton.trailingAnchor.constraint(equalTo: sliderView.trailingAnchor), speedButton.heightAnchor.constraint(equalToConstant: 40)
speedButton.widthAnchor.constraint(equalToConstant: 40), ])
speedButton.heightAnchor.constraint(equalToConstant: 40)
])
} else {
NSLayoutConstraint.activate([
speedButton.bottomAnchor.constraint(equalTo: controlsContainerView.bottomAnchor, constant: -50),
speedButton.trailingAnchor.constraint(equalTo: menuButton.leadingAnchor),
speedButton.widthAnchor.constraint(equalToConstant: 40),
speedButton.heightAnchor.constraint(equalToConstant: 40)
])
}
} }
func setupWatchNextButton() { func setupWatchNextButton() {
@ -599,8 +589,8 @@ class CustomMediaPlayerViewController: UIViewController {
] ]
watchNextButtonControlsConstraints = [ watchNextButtonControlsConstraints = [
watchNextButton.trailingAnchor.constraint(equalTo: qualityButton.leadingAnchor), watchNextButton.trailingAnchor.constraint(equalTo: sliderHostingController!.view.trailingAnchor),
watchNextButton.bottomAnchor.constraint(equalTo: skip85Button.bottomAnchor), watchNextButton.bottomAnchor.constraint(equalTo: sliderHostingController!.view.topAnchor, constant: -5),
watchNextButton.heightAnchor.constraint(equalToConstant: 50), watchNextButton.heightAnchor.constraint(equalToConstant: 50),
watchNextButton.widthAnchor.constraint(greaterThanOrEqualToConstant: 120) watchNextButton.widthAnchor.constraint(greaterThanOrEqualToConstant: 120)
] ]
@ -637,17 +627,18 @@ class CustomMediaPlayerViewController: UIViewController {
qualityButton.showsMenuAsPrimaryAction = true qualityButton.showsMenuAsPrimaryAction = true
qualityButton.menu = qualitySelectionMenu() qualityButton.menu = qualitySelectionMenu()
qualityButton.isHidden = true qualityButton.isHidden = true
controlsContainerView.addSubview(qualityButton) controlsContainerView.addSubview(qualityButton)
qualityButton.translatesAutoresizingMaskIntoConstraints = false qualityButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
qualityButton.bottomAnchor.constraint(equalTo: controlsContainerView.bottomAnchor, constant: -50), qualityButton.topAnchor.constraint(equalTo: controlsContainerView.topAnchor, constant: 20),
qualityButton.trailingAnchor.constraint(equalTo: speedButton.leadingAnchor), qualityButton.trailingAnchor.constraint(equalTo: controlsContainerView.trailingAnchor, constant: -20),
qualityButton.widthAnchor.constraint(equalToConstant: 40), qualityButton.widthAnchor.constraint(equalToConstant: 40),
qualityButton.heightAnchor.constraint(equalToConstant: 40) qualityButton.heightAnchor.constraint(equalToConstant: 40)
]) ])
} }
func updateSubtitleLabelAppearance() { func updateSubtitleLabelAppearance() {
subtitleLabel.font = UIFont.systemFont(ofSize: CGFloat(subtitleFontSize)) subtitleLabel.font = UIFont.systemFont(ofSize: CGFloat(subtitleFontSize))