chore(onboarding): Improve airplane movement add clouds movement

This commit is contained in:
Marcus Kida 2022-12-28 14:09:36 +01:00 committed by Nathan Mattes
parent 6d241495a2
commit 0675bdb7db
1 changed files with 167 additions and 156 deletions

View File

@ -12,12 +12,11 @@ import MastodonUI
import MastodonLocalization
fileprivate extension CGFloat {
static let cloudsStartPosition = 0.0
static let centerHillStartPosition = 20.0
static let airplaneStartPosition = -178.0
static let leftHillStartPosition = 30.0
static let rightHillStartPosition = -161.0
static let airplaneSpeed = 50.0
static let leftHillSpeed = 20.0
static let centerHillSpeed = 40.0
static let rightHillSpeed = 20.0
@ -32,6 +31,7 @@ final class WelcomeIllustrationView: UIView {
private let elephantThreeOnGrassImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrass.image
private let elephantThreeOnGrassExtendImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrassExtend.image
var cloudsLeftAnchor: NSLayoutConstraint?
var elephantOnAirplaneLeftConstraint: NSLayoutConstraint?
var leftHillLeftConstraint: NSLayoutConstraint?
var centerHillLeftConstraint: NSLayoutConstraint?
@ -68,7 +68,7 @@ final class WelcomeIllustrationView: UIView {
let cloudBaseImageView: UIImageView = {
let imageView = UIImageView(image: Asset.Scene.Welcome.Illustration.cloudBase.image)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.contentMode = .scaleAspectFit
imageView.contentMode = .scaleAspectFill
imageView.alpha = 0.3
return imageView
}()
@ -85,6 +85,9 @@ final class WelcomeIllustrationView: UIView {
_init()
}
// modifiers for animations
private lazy var cloudsDrag: CGFloat = -(bounds.width / 64)
private lazy var airplaneDrag: CGFloat = bounds.width / 64
}
extension WelcomeIllustrationView {
@ -94,12 +97,15 @@ extension WelcomeIllustrationView {
cloudBaseImageView.translatesAutoresizingMaskIntoConstraints = false
addSubview(cloudBaseImageView)
let cloudsLeftAnchor = cloudBaseImageView.leftAnchor.constraint(equalTo: leftAnchor, constant: .cloudsStartPosition)
NSLayoutConstraint.activate([
cloudBaseImageView.leadingAnchor.constraint(equalTo: leadingAnchor),
cloudBaseImageView.trailingAnchor.constraint(equalTo: trailingAnchor),
cloudsLeftAnchor,
cloudBaseImageView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 1.4),
cloudBaseImageView.bottomAnchor.constraint(equalTo: bottomAnchor),
cloudBaseImageView.topAnchor.constraint(equalTo: topAnchor)
])
self.cloudsLeftAnchor = cloudsLeftAnchor
let rightHillRightConstraint = rightAnchor.constraint(equalTo: rightHillImageView.rightAnchor, constant: .rightHillStartPosition)
addSubview(rightHillImageView)
@ -171,7 +177,12 @@ extension WelcomeIllustrationView {
}
func update(contentOffset: CGFloat) {
elephantOnAirplaneLeftConstraint?.constant = contentOffset / .airplaneSpeed + .airplaneStartPosition
cloudsLeftAnchor?.constant = {
let val = contentOffset / cloudsDrag + .cloudsStartPosition
print(val)
return val
}()
elephantOnAirplaneLeftConstraint?.constant = contentOffset / airplaneDrag + .airplaneStartPosition
leftHillLeftConstraint?.constant = contentOffset / .leftHillSpeed + .leftHillStartPosition
centerHillLeftConstraint?.constant = contentOffset / .centerHillSpeed + .centerHillStartPosition
rightHillRightConstraint?.constant = contentOffset / .rightHillSpeed + .rightHillStartPosition