2020-02-20 04:37:17 +01:00
|
|
|
|
|
|
|
class BaseVC : UIViewController {
|
2020-08-24 03:28:56 +02:00
|
|
|
private var hasGradient = false
|
2020-02-20 04:37:17 +01:00
|
|
|
|
|
|
|
override var preferredStatusBarStyle: UIStatusBarStyle { return isLightMode ? .default : .lightContent }
|
|
|
|
|
2020-06-25 09:36:32 +02:00
|
|
|
lazy var navBarTitleLabel: UILabel = {
|
|
|
|
let result = UILabel()
|
|
|
|
result.textColor = Colors.text
|
|
|
|
result.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
|
|
|
result.alpha = 1
|
|
|
|
result.textAlignment = .center
|
|
|
|
return result
|
|
|
|
}()
|
|
|
|
|
|
|
|
lazy var crossfadeLabel: UILabel = {
|
|
|
|
let result = UILabel()
|
|
|
|
result.textColor = Colors.text
|
|
|
|
result.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
|
|
|
result.alpha = 0
|
|
|
|
result.textAlignment = .center
|
|
|
|
return result
|
|
|
|
}()
|
|
|
|
|
2020-02-20 04:37:17 +01:00
|
|
|
override func viewDidLoad() {
|
|
|
|
setNeedsStatusBarAppearanceUpdate()
|
2020-08-24 03:28:56 +02:00
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(handleAppModeChangedNotification(_:)), name: .appModeChanged, object: nil)
|
2020-03-23 07:09:59 +01:00
|
|
|
}
|
|
|
|
|
2020-05-30 00:20:30 +02:00
|
|
|
internal func setUpGradientBackground() {
|
2020-08-24 03:28:56 +02:00
|
|
|
hasGradient = true
|
2020-05-30 00:20:30 +02:00
|
|
|
view.backgroundColor = .clear
|
|
|
|
let gradient = Gradients.defaultLokiBackground
|
|
|
|
view.setGradient(gradient)
|
|
|
|
}
|
|
|
|
|
|
|
|
internal func setUpNavBarStyle() {
|
2020-08-27 07:06:11 +02:00
|
|
|
guard let navigationBar = navigationController?.navigationBar else { return }
|
2020-05-30 00:20:30 +02:00
|
|
|
navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
|
|
|
|
navigationBar.shadowImage = UIImage()
|
|
|
|
navigationBar.isTranslucent = false
|
|
|
|
navigationBar.barTintColor = Colors.navigationBarBackground
|
|
|
|
}
|
|
|
|
|
|
|
|
internal func setNavBarTitle(_ title: String, customFontSize: CGFloat? = nil) {
|
2020-06-25 09:36:32 +02:00
|
|
|
let container = UIView()
|
|
|
|
navBarTitleLabel.text = title
|
|
|
|
crossfadeLabel.text = title
|
|
|
|
if let customFontSize = customFontSize {
|
|
|
|
navBarTitleLabel.font = .boldSystemFont(ofSize: customFontSize)
|
|
|
|
crossfadeLabel.font = .boldSystemFont(ofSize: customFontSize)
|
|
|
|
}
|
|
|
|
container.addSubview(navBarTitleLabel)
|
|
|
|
navBarTitleLabel.pin(to: container)
|
|
|
|
container.addSubview(crossfadeLabel)
|
|
|
|
crossfadeLabel.pin(to: container)
|
|
|
|
navigationItem.titleView = container
|
2020-05-30 00:20:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
internal func setUpNavBarSessionIcon() {
|
|
|
|
let logoImageView = UIImageView()
|
|
|
|
logoImageView.image = #imageLiteral(resourceName: "SessionGreen32")
|
|
|
|
logoImageView.contentMode = .scaleAspectFit
|
|
|
|
logoImageView.set(.width, to: 32)
|
|
|
|
logoImageView.set(.height, to: 32)
|
|
|
|
navigationItem.titleView = logoImageView
|
|
|
|
}
|
|
|
|
|
2020-03-23 07:09:59 +01:00
|
|
|
deinit {
|
|
|
|
NotificationCenter.default.removeObserver(self)
|
|
|
|
}
|
|
|
|
|
2020-08-24 06:24:44 +02:00
|
|
|
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
|
|
|
// TODO: Post an appModeChanged notification?
|
|
|
|
}
|
|
|
|
|
2020-08-24 03:28:56 +02:00
|
|
|
@objc internal func handleAppModeChangedNotification(_ notification: Notification) {
|
|
|
|
if hasGradient {
|
|
|
|
setUpGradientBackground() // Re-do the gradient
|
|
|
|
}
|
|
|
|
}
|
2020-02-20 04:37:17 +01:00
|
|
|
}
|