initial
This commit is contained in:
91
Pods/SwiftEntryKit/Source/Model/EntryAttributes/EKAttributes+StatusBar.swift
generated
Normal file
91
Pods/SwiftEntryKit/Source/Model/EntryAttributes/EKAttributes+StatusBar.swift
generated
Normal file
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// EKAttributes+StatusBar.swift
|
||||
// SwiftEntryKit
|
||||
//
|
||||
// Created by Daniel Huri on 5/25/18.
|
||||
// Copyright (c) 2018 huri000@gmail.com. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public extension EKAttributes {
|
||||
|
||||
/** Status bar appearance */
|
||||
enum StatusBar {
|
||||
|
||||
/** The appearance of the status bar */
|
||||
public typealias Appearance = (visible: Bool, style: UIStatusBarStyle)
|
||||
|
||||
/** Ignored. Status bar is ignored by entries with this apperance value*/
|
||||
case ignored
|
||||
|
||||
/** Hidden. Doesn't apply to iPhone X */
|
||||
case hidden
|
||||
|
||||
/** Visible with explicit dark style */
|
||||
case dark
|
||||
|
||||
/** Visible with explicit light style */
|
||||
case light
|
||||
|
||||
/** Keep previous state of status bar.
|
||||
In case there is an already displayed entry, keep its status bar appearance.
|
||||
In case the app is already displaying a status bar, keep its appearance */
|
||||
case inferred
|
||||
|
||||
/** Returns the status bar appearance.
|
||||
Note: See *Appearance* */
|
||||
public var appearance: Appearance {
|
||||
switch self {
|
||||
case .dark:
|
||||
if #available(iOS 13, *) {
|
||||
return (true, .darkContent)
|
||||
} else {
|
||||
return (true, .default)
|
||||
}
|
||||
case .light:
|
||||
return (true, .lightContent)
|
||||
case .inferred:
|
||||
return StatusBar.currentAppearance
|
||||
case .hidden:
|
||||
return (false, StatusBar.currentStyle)
|
||||
case .ignored:
|
||||
fatalError("There is no defined appearance for an ignored status bar")
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the status bar according to a given appearance */
|
||||
public static func statusBar(by appearance: Appearance) -> StatusBar {
|
||||
guard appearance.visible else {
|
||||
return .hidden
|
||||
}
|
||||
switch appearance.style {
|
||||
case .lightContent:
|
||||
return .light
|
||||
default:
|
||||
return .dark
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the current appearance */
|
||||
public static var currentAppearance: Appearance {
|
||||
return (StatusBar.isCurrentVisible, StatusBar.currentStyle)
|
||||
}
|
||||
|
||||
/** Returns the current status bar */
|
||||
public static var currentStatusBar: StatusBar {
|
||||
return statusBar(by: currentAppearance)
|
||||
}
|
||||
|
||||
// Accessors
|
||||
// TODO: Use `statusBarManager` of the window scene on iOS 13
|
||||
private static var currentStyle: UIStatusBarStyle {
|
||||
return UIApplication.shared.statusBarStyle
|
||||
}
|
||||
|
||||
// TODO: Use `statusBarManager` of the window scene on iOS 13
|
||||
private static var isCurrentVisible: Bool {
|
||||
return !UIApplication.shared.isStatusBarHidden
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user