Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a24b79f443 | ||
| c0eb5f95c6 | |||
| a15d95ed59 | |||
|
|
40581d791a |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
.DS_Store
|
||||
/.build
|
||||
/build
|
||||
/Packages
|
||||
xcuserdata/
|
||||
DerivedData/
|
||||
|
||||
@@ -22,3 +22,5 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
Autor: Daniel Arantes Loverde
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "lcecryptokitbinary",
|
||||
"kind" : "localSourceControl",
|
||||
"location" : "/Users/loverde_co/Documents/Loverde_JOBs/Producao/Loverde Co/GIT/XCODE/Repositorios/LCECryptoKit/PrivateLib/LCECryptoKitBinary",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://60c260c85d3a2fe840411b0ff98f521b5eca3c56@git.loverde.com.br/Loverde-Company-LTDA/LCECryptoKitBinary.git",
|
||||
"state" : {
|
||||
"revision" : "2c5c47cebef40a8adc5557d071a35be405c05e30",
|
||||
"version" : "1.0.2"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import PackageDescription
|
||||
import Foundation
|
||||
|
||||
let isLocalDevelopment = FileManager.default.fileExists(atPath: "../LCECryptoKit/PrivateLib/LCECryptoKitBinary")
|
||||
let isLocalDevelopment = false //FileManager.default.fileExists(atPath: "../LCECryptoKit/PrivateLib/LCECryptoKitBinary")
|
||||
let enableCryptoBinary = ProcessInfo.processInfo.environment["LCE_ENABLE_CRYPTO_BINARY"] != "0"
|
||||
|
||||
let cryptoPackageURL = isLocalDevelopment
|
||||
|
||||
@@ -59,12 +59,11 @@ And then import `LCEssentials ` wherever you import UIKit or SwiftUI
|
||||
import LCEssentials
|
||||
```
|
||||
|
||||
Author:
|
||||
----
|
||||
|
||||
Any question or doubts, please send thru email
|
||||
|
||||
Daniel Arantes Loverde - <daniel@loverde.com.br>
|
||||
|
||||
[](https://github.com/loverde-co/resume/)
|
||||
[](https://github.com/loverde-co)
|
||||
|
||||
Autor: Daniel Arantes Loverde
|
||||
|
||||
@@ -233,53 +233,36 @@ public extension LCSnackBarView {
|
||||
|
||||
/// Handles the `keyboardWillShowNotification` to adjust the snackbar's position.
|
||||
/// - Parameter notification: The `Notification` object containing keyboard information.
|
||||
@objc private func keyboardWillShow(_ notification: Notification?) -> Void {
|
||||
@MainActor
|
||||
@objc private func keyboardWillShow(_ notification: Notification?) {
|
||||
guard let info = notification?.userInfo else { return }
|
||||
|
||||
if let info = notification?.userInfo {
|
||||
systemKeyboardVisible = true
|
||||
|
||||
systemKeyboardVisible = true
|
||||
//
|
||||
let curveUserInfoKey = UIResponder.keyboardAnimationCurveUserInfoKey
|
||||
let durationUserInfoKey = UIResponder.keyboardAnimationDurationUserInfoKey
|
||||
let frameEndUserInfoKey = UIResponder.keyboardFrameEndUserInfoKey
|
||||
//
|
||||
var animationCurve: UIView.AnimationOptions = .curveEaseOut
|
||||
var animationDuration: TimeInterval = 0.25
|
||||
var height:CGFloat = 0.0
|
||||
let animationCurveRaw = (info[UIResponder.keyboardAnimationCurveUserInfoKey] as? NSNumber)?.uintValue
|
||||
?? UInt(UIView.AnimationCurve.easeOut.rawValue)
|
||||
let animationDuration = (info[UIResponder.keyboardAnimationDurationUserInfoKey] as? NSNumber)?.doubleValue
|
||||
?? 0.25
|
||||
let keyboardFrame = (info[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
|
||||
?? .zero
|
||||
let height = keyboardFrame.height
|
||||
let animationCurve = UIView.AnimationOptions(rawValue: animationCurveRaw << 16)
|
||||
|
||||
// Getting keyboard animation.
|
||||
if let curve = info[curveUserInfoKey] as? UIView.AnimationOptions {
|
||||
animationCurve = curve
|
||||
}
|
||||
|
||||
// Getting keyboard animation duration
|
||||
if let duration = info[durationUserInfoKey] as? TimeInterval {
|
||||
animationDuration = duration
|
||||
}
|
||||
|
||||
// Getting UIKeyboardSize.
|
||||
if let kbFrame = info[frameEndUserInfoKey] as? CGRect {
|
||||
height = kbFrame.size.height
|
||||
}
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
UIView.animate(withDuration: animationDuration,
|
||||
delay: 0,
|
||||
options: animationCurve,
|
||||
animations: {
|
||||
self?.frame.origin.y += height
|
||||
})
|
||||
}
|
||||
UIView.animate(
|
||||
withDuration: animationDuration,
|
||||
delay: 0,
|
||||
options: animationCurve
|
||||
) { [weak self] in
|
||||
self?.frame.origin.y += height
|
||||
}
|
||||
}
|
||||
|
||||
/// Handles the `keyboardWillHideNotification`.
|
||||
/// - Parameter notification: The `Notification` object.
|
||||
@objc private func keyboardWillHide(_ notification: Notification?) -> Void {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
self?.systemKeyboardVisible = false
|
||||
// keyboard is hidded
|
||||
}
|
||||
@MainActor
|
||||
@objc private func keyboardWillHide(_ notification: Notification?) {
|
||||
systemKeyboardVisible = false
|
||||
// keyboard is hidded
|
||||
}
|
||||
|
||||
/// Updates the snackbar's style properties, such as width and corner radius, based on `_style`.
|
||||
|
||||
@@ -47,6 +47,8 @@ class LCENavigationState: ObservableObject {
|
||||
@Published var title: (any View) = Text("")
|
||||
/// The subtitle view of the navigation bar.
|
||||
@Published var subTitle: (any View) = Text("")
|
||||
/// The background color of the navigation bar.
|
||||
@Published var navigationBarBackgroundColor: Color = .clear
|
||||
}
|
||||
|
||||
/// `LCENavigationView` is a SwiftUI `View` that provides a customizable navigation bar.
|
||||
@@ -79,7 +81,7 @@ public struct LCENavigationView<Content: View>: View {
|
||||
|
||||
/// The body of the `LCENavigationView`.
|
||||
public var body: some View {
|
||||
VStack {
|
||||
VStack(spacing: 0) {
|
||||
if !state.hideNavigationBar {
|
||||
NavigationBarView
|
||||
}
|
||||
@@ -100,7 +102,7 @@ public struct LCENavigationView<Content: View>: View {
|
||||
.font(.headline)
|
||||
.padding()
|
||||
.background {
|
||||
Color.clear.ignoresSafeArea(edges: .top)
|
||||
state.navigationBarBackgroundColor.ignoresSafeArea(edges: .top)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,6 +219,14 @@ public struct LCENavigationView<Content: View>: View {
|
||||
state.hideNavigationBar = hide
|
||||
return self
|
||||
}
|
||||
|
||||
/// Sets the background color for the navigation bar.
|
||||
/// - Parameter color: The color to use as the navigation bar background.
|
||||
/// - Returns: The `LCENavigationView` instance for chaining.
|
||||
public func setNavigationBarBackgroundColor(_ color: Color) -> LCENavigationView {
|
||||
state.navigationBarBackgroundColor = color
|
||||
return self
|
||||
}
|
||||
}
|
||||
|
||||
/// Extension to `FormatStyle` to format any value as a string.
|
||||
|
||||
Reference in New Issue
Block a user