Profile avatar and animation improvements

This commit is contained in:
Justin Mazzocchi 2021-01-16 12:45:56 -08:00
parent 8fb20269e3
commit 0082360692
No known key found for this signature in database
GPG key ID: E223E6937AAFB01C
3 changed files with 22 additions and 8 deletions

View file

@ -51,6 +51,7 @@ private extension ZoomAnimator {
if transitionView == nil, let transitionView = (fromReferenceView as? ZoomAnimatableView)?.transitionView() {
transitionView.frame = fromReferenceViewFrame
transitionView.layer.contentsRect = fromReferenceView.layer.contentsRect
transitionView.layer.cornerRadius = fromReferenceView.layer.cornerRadius
self.transitionView = transitionView
transitionContext.containerView.addSubview(transitionView)
}
@ -67,6 +68,7 @@ private extension ZoomAnimator {
options: [.transitionCrossDissolve]) {
self.transitionView?.frame = finalTransitionSize
self.transitionView?.layer.contentsRect = .defaultContentsRect
self.transitionView?.layer.cornerRadius = 0
toVC.view.alpha = 1.0
fromVC.tabBarController?.tabBar.alpha = 0
} completion: { _ in
@ -117,6 +119,7 @@ private extension ZoomAnimator {
}
self.transitionView?.layer.contentsRect = toReferenceView?.layer.contentsRect ?? .defaultContentsRect
self.transitionView?.layer.cornerRadius = toReferenceView?.layer.cornerRadius ?? 0
toVC.tabBarController?.tabBar.alpha = 1
} completion: { _ in

View file

@ -84,6 +84,7 @@ final class ZoomDismissalInteractionController: NSObject {
}
transitionView.layer.contentsRect = toReferenceView?.layer.contentsRect ?? .defaultContentsRect
transitionView.layer.cornerRadius = toReferenceView?.layer.cornerRadius ?? 0
toVC.tabBarController?.tabBar.alpha = 1
} completion: { _ in

View file

@ -7,6 +7,7 @@ import ViewModels
final class AccountHeaderView: UIView {
let headerImageView = AnimatedImageView()
let headerButton = UIButton()
let avatarBackgroundView = UIView()
let avatarImageView = UIImageView()
let avatarButton = UIButton()
let relationshipButtonsStackView = UIStackView()
@ -177,14 +178,19 @@ private extension AccountHeaderView {
headerButton.addAction(UIAction { [weak self] _ in self?.viewModel?.presentHeader() }, for: .touchUpInside)
addSubview(avatarImageView)
let avatarBackgroundViewDimension = Self.avatarDimension + .compactSpacing * 2
addSubview(avatarBackgroundView)
avatarBackgroundView.translatesAutoresizingMaskIntoConstraints = false
avatarBackgroundView.backgroundColor = .systemBackground
avatarBackgroundView.layer.cornerRadius = avatarBackgroundViewDimension / 2
avatarBackgroundView.addSubview(avatarImageView)
avatarImageView.translatesAutoresizingMaskIntoConstraints = false
avatarImageView.contentMode = .scaleAspectFill
avatarImageView.clipsToBounds = true
avatarImageView.isUserInteractionEnabled = true
avatarImageView.layer.cornerRadius = Self.avatarDimension / 2
avatarImageView.layer.borderWidth = .compactSpacing
avatarImageView.layer.borderColor = UIColor.systemBackground.cgColor
avatarImageView.addSubview(avatarButton)
avatarButton.translatesAutoresizingMaskIntoConstraints = false
@ -318,21 +324,25 @@ private extension AccountHeaderView {
headerButton.topAnchor.constraint(equalTo: headerImageView.topAnchor),
headerButton.bottomAnchor.constraint(equalTo: headerImageView.bottomAnchor),
headerButton.trailingAnchor.constraint(equalTo: headerImageView.trailingAnchor),
avatarBackgroundView.heightAnchor.constraint(equalToConstant: avatarBackgroundViewDimension),
avatarBackgroundView.widthAnchor.constraint(equalToConstant: avatarBackgroundViewDimension),
avatarBackgroundView.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor),
avatarBackgroundView.centerYAnchor.constraint(equalTo: headerImageView.bottomAnchor),
avatarImageView.heightAnchor.constraint(equalToConstant: Self.avatarDimension),
avatarImageView.widthAnchor.constraint(equalToConstant: Self.avatarDimension),
avatarImageView.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor),
avatarImageView.centerYAnchor.constraint(equalTo: headerImageView.bottomAnchor),
avatarImageView.centerXAnchor.constraint(equalTo: avatarBackgroundView.centerXAnchor),
avatarImageView.centerYAnchor.constraint(equalTo: avatarBackgroundView.centerYAnchor),
avatarButton.leadingAnchor.constraint(equalTo: avatarImageView.leadingAnchor),
avatarButton.topAnchor.constraint(equalTo: avatarImageView.topAnchor),
avatarButton.bottomAnchor.constraint(equalTo: avatarImageView.bottomAnchor),
avatarButton.trailingAnchor.constraint(equalTo: avatarImageView.trailingAnchor),
relationshipButtonsStackView.leadingAnchor.constraint(equalTo: avatarImageView.trailingAnchor),
relationshipButtonsStackView.leadingAnchor.constraint(equalTo: avatarBackgroundView.trailingAnchor),
relationshipButtonsStackView.topAnchor.constraint(
equalTo: headerImageView.bottomAnchor,
constant: .defaultSpacing),
relationshipButtonsStackView.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor),
relationshipButtonsStackView.bottomAnchor.constraint(equalTo: avatarImageView.bottomAnchor),
baseStackView.topAnchor.constraint(equalTo: avatarImageView.bottomAnchor, constant: .defaultSpacing),
relationshipButtonsStackView.bottomAnchor.constraint(equalTo: avatarBackgroundView.bottomAnchor),
baseStackView.topAnchor.constraint(equalTo: avatarBackgroundView.bottomAnchor, constant: .defaultSpacing),
baseStackView.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor),
baseStackView.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor),
baseStackView.bottomAnchor.constraint(equalTo: readableContentGuide.bottomAnchor)