chore(onboarding): Improve airplane movement add clouds movement
This commit is contained in:
parent
6d241495a2
commit
0675bdb7db
|
@ -12,12 +12,11 @@ import MastodonUI
|
||||||
import MastodonLocalization
|
import MastodonLocalization
|
||||||
|
|
||||||
fileprivate extension CGFloat {
|
fileprivate extension CGFloat {
|
||||||
|
static let cloudsStartPosition = 0.0
|
||||||
static let centerHillStartPosition = 20.0
|
static let centerHillStartPosition = 20.0
|
||||||
static let airplaneStartPosition = -178.0
|
static let airplaneStartPosition = -178.0
|
||||||
static let leftHillStartPosition = 30.0
|
static let leftHillStartPosition = 30.0
|
||||||
static let rightHillStartPosition = -161.0
|
static let rightHillStartPosition = -161.0
|
||||||
|
|
||||||
static let airplaneSpeed = 50.0
|
|
||||||
static let leftHillSpeed = 20.0
|
static let leftHillSpeed = 20.0
|
||||||
static let centerHillSpeed = 40.0
|
static let centerHillSpeed = 40.0
|
||||||
static let rightHillSpeed = 20.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 elephantThreeOnGrassImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrass.image
|
||||||
private let elephantThreeOnGrassExtendImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrassExtend.image
|
private let elephantThreeOnGrassExtendImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrassExtend.image
|
||||||
|
|
||||||
|
var cloudsLeftAnchor: NSLayoutConstraint?
|
||||||
var elephantOnAirplaneLeftConstraint: NSLayoutConstraint?
|
var elephantOnAirplaneLeftConstraint: NSLayoutConstraint?
|
||||||
var leftHillLeftConstraint: NSLayoutConstraint?
|
var leftHillLeftConstraint: NSLayoutConstraint?
|
||||||
var centerHillLeftConstraint: NSLayoutConstraint?
|
var centerHillLeftConstraint: NSLayoutConstraint?
|
||||||
|
@ -68,7 +68,7 @@ final class WelcomeIllustrationView: UIView {
|
||||||
let cloudBaseImageView: UIImageView = {
|
let cloudBaseImageView: UIImageView = {
|
||||||
let imageView = UIImageView(image: Asset.Scene.Welcome.Illustration.cloudBase.image)
|
let imageView = UIImageView(image: Asset.Scene.Welcome.Illustration.cloudBase.image)
|
||||||
imageView.translatesAutoresizingMaskIntoConstraints = false
|
imageView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
imageView.contentMode = .scaleAspectFit
|
imageView.contentMode = .scaleAspectFill
|
||||||
imageView.alpha = 0.3
|
imageView.alpha = 0.3
|
||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
@ -85,6 +85,9 @@ final class WelcomeIllustrationView: UIView {
|
||||||
_init()
|
_init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// modifiers for animations
|
||||||
|
private lazy var cloudsDrag: CGFloat = -(bounds.width / 64)
|
||||||
|
private lazy var airplaneDrag: CGFloat = bounds.width / 64
|
||||||
}
|
}
|
||||||
|
|
||||||
extension WelcomeIllustrationView {
|
extension WelcomeIllustrationView {
|
||||||
|
@ -94,12 +97,15 @@ extension WelcomeIllustrationView {
|
||||||
|
|
||||||
cloudBaseImageView.translatesAutoresizingMaskIntoConstraints = false
|
cloudBaseImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
addSubview(cloudBaseImageView)
|
addSubview(cloudBaseImageView)
|
||||||
|
|
||||||
|
let cloudsLeftAnchor = cloudBaseImageView.leftAnchor.constraint(equalTo: leftAnchor, constant: .cloudsStartPosition)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
cloudBaseImageView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
cloudsLeftAnchor,
|
||||||
cloudBaseImageView.trailingAnchor.constraint(equalTo: trailingAnchor),
|
cloudBaseImageView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 1.4),
|
||||||
cloudBaseImageView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
cloudBaseImageView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
||||||
cloudBaseImageView.topAnchor.constraint(equalTo: topAnchor)
|
cloudBaseImageView.topAnchor.constraint(equalTo: topAnchor)
|
||||||
])
|
])
|
||||||
|
self.cloudsLeftAnchor = cloudsLeftAnchor
|
||||||
|
|
||||||
let rightHillRightConstraint = rightAnchor.constraint(equalTo: rightHillImageView.rightAnchor, constant: .rightHillStartPosition)
|
let rightHillRightConstraint = rightAnchor.constraint(equalTo: rightHillImageView.rightAnchor, constant: .rightHillStartPosition)
|
||||||
addSubview(rightHillImageView)
|
addSubview(rightHillImageView)
|
||||||
|
@ -171,7 +177,12 @@ extension WelcomeIllustrationView {
|
||||||
}
|
}
|
||||||
|
|
||||||
func update(contentOffset: CGFloat) {
|
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
|
leftHillLeftConstraint?.constant = contentOffset / .leftHillSpeed + .leftHillStartPosition
|
||||||
centerHillLeftConstraint?.constant = contentOffset / .centerHillSpeed + .centerHillStartPosition
|
centerHillLeftConstraint?.constant = contentOffset / .centerHillSpeed + .centerHillStartPosition
|
||||||
rightHillRightConstraint?.constant = contentOffset / .rightHillSpeed + .rightHillStartPosition
|
rightHillRightConstraint?.constant = contentOffset / .rightHillSpeed + .rightHillStartPosition
|
||||||
|
|
Loading…
Reference in New Issue