From 1342471c5dc9c4d3ac56006bd241168c1bfd4ff2 Mon Sep 17 00:00:00 2001 From: sunxiaojian Date: Thu, 11 Mar 2021 15:34:30 +0800 Subject: [PATCH] chore: handle Video&Gif sensitive situation --- .../Diffiable/Section/StatusSection.swift | 2 ++ ...Provider+StatusTableViewCellDelegate.swift | 2 +- .../View/Container/MosaicPlayerView.swift | 16 +++++------ .../Share/View/Container/MosaicView.swift | 27 ++++++++++++++----- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/Mastodon/Diffiable/Section/StatusSection.swift b/Mastodon/Diffiable/Section/StatusSection.swift index f742e473..53a2207a 100644 --- a/Mastodon/Diffiable/Section/StatusSection.swift +++ b/Mastodon/Diffiable/Section/StatusSection.swift @@ -192,8 +192,10 @@ extension StatusSection { let scale: CGFloat = 1.3 return CGSize(width: maxWidth, height: maxWidth * scale) }() + cell.statusView.mosaicPlayerView.mosaicView.blurVisualEffectView.effect = isStatusSensitive ? MosaicImageViewContainer.blurVisualEffect : nil cell.statusView.mosaicPlayerView.mosaicView.vibrancyVisualEffectView.alpha = isStatusSensitive ? 1.0 : 0.0 + cell.statusView.mosaicPlayerView.mosaicView.isUserInteractionEnabled = isStatusSensitive cell.statusView.mosaicPlayerView.mosaicView.mosaicButton.publisher(for: .touchUpInside) .sink { [weak cell] _ in guard let cell = cell else { return } diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift index db26930c..9e2797f2 100644 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift @@ -57,7 +57,7 @@ extension StatusTableViewCellDelegate where Self: StatusProvider { default: return } - + mosaicView.isUserInteractionEnabled = false var snapshot = diffableDataSource.snapshot() snapshot.reloadItems([item]) UIView.animate(withDuration: 0.33) { diff --git a/Mastodon/Scene/Share/View/Container/MosaicPlayerView.swift b/Mastodon/Scene/Share/View/Container/MosaicPlayerView.swift index 52596162..1851154b 100644 --- a/Mastodon/Scene/Share/View/Container/MosaicPlayerView.swift +++ b/Mastodon/Scene/Share/View/Container/MosaicPlayerView.swift @@ -43,14 +43,6 @@ final class MosaicPlayerView: UIView { extension MosaicPlayerView { private func _init() { - addSubview(mosaicView) - NSLayoutConstraint.activate([ - mosaicView.topAnchor.constraint(equalTo: topAnchor), - mosaicView.leadingAnchor.constraint(equalTo: leadingAnchor), - mosaicView.trailingAnchor.constraint(equalTo: trailingAnchor), - mosaicView.bottomAnchor.constraint(equalTo: bottomAnchor) - ]) - container.translatesAutoresizingMaskIntoConstraints = false addSubview(container) containerHeightLayoutConstraint = container.heightAnchor.constraint(equalToConstant: 162).priority(.required - 1) @@ -74,6 +66,14 @@ extension MosaicPlayerView { playerViewController.view.layer.masksToBounds = true playerViewController.view.layer.cornerRadius = MosaicPlayerView.cornerRadius playerViewController.view.layer.cornerCurve = .continuous + + addSubview(mosaicView) + NSLayoutConstraint.activate([ + mosaicView.topAnchor.constraint(equalTo: topAnchor), + mosaicView.leadingAnchor.constraint(equalTo: leadingAnchor), + mosaicView.trailingAnchor.constraint(equalTo: trailingAnchor), + mosaicView.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) } } diff --git a/Mastodon/Scene/Share/View/Container/MosaicView.swift b/Mastodon/Scene/Share/View/Container/MosaicView.swift index 10adf3ab..82049dbb 100644 --- a/Mastodon/Scene/Share/View/Container/MosaicView.swift +++ b/Mastodon/Scene/Share/View/Container/MosaicView.swift @@ -17,6 +17,7 @@ class MosaicView: UIView { let mosaicButton: UIButton = { let button = UIButton(type: .custom) button.backgroundColor = .clear + button.translatesAutoresizingMaskIntoConstraints = false return button }() @@ -41,14 +42,9 @@ class MosaicView: UIView { extension MosaicView { private func _init() { + backgroundColor = .clear translatesAutoresizingMaskIntoConstraints = false - addSubview(mosaicButton) - NSLayoutConstraint.activate([ - mosaicButton.topAnchor.constraint(equalTo: topAnchor), - mosaicButton.trailingAnchor.constraint(equalTo: trailingAnchor), - mosaicButton.bottomAnchor.constraint(equalTo: bottomAnchor), - mosaicButton.leadingAnchor.constraint(equalTo: leadingAnchor), - ]) + // add blur visual effect view in the setup method blurVisualEffectView.layer.masksToBounds = true blurVisualEffectView.layer.cornerRadius = MosaicView.cornerRadius @@ -70,5 +66,22 @@ extension MosaicView { contentWarningLabel.trailingAnchor.constraint(equalTo: vibrancyVisualEffectView.contentView.layoutMarginsGuide.trailingAnchor), contentWarningLabel.centerYAnchor.constraint(equalTo: vibrancyVisualEffectView.contentView.centerYAnchor), ]) + + blurVisualEffectView.translatesAutoresizingMaskIntoConstraints = false + addSubview(blurVisualEffectView) + NSLayoutConstraint.activate([ + blurVisualEffectView.topAnchor.constraint(equalTo: topAnchor), + blurVisualEffectView.leadingAnchor.constraint(equalTo: leadingAnchor), + blurVisualEffectView.trailingAnchor.constraint(equalTo: trailingAnchor), + blurVisualEffectView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + addSubview(mosaicButton) + NSLayoutConstraint.activate([ + mosaicButton.topAnchor.constraint(equalTo: topAnchor), + mosaicButton.trailingAnchor.constraint(equalTo: trailingAnchor), + mosaicButton.bottomAnchor.constraint(equalTo: bottomAnchor), + mosaicButton.leadingAnchor.constraint(equalTo: leadingAnchor), + ]) } }