This Package is related to Gitee. If you feel that the introduction of Github addresses in SPM is slow, you can use Gitee.
HUD is a Loading pop-up tool developed based on SwiftUI, style reference ProgressHUD and PopupView.
The current functions include Loading, Progress, Success, Fail, and PopupView, which support custom styles inherited from protocols and pop-up animations.
Support dark mode
![]() |
![]() |
![]() |
||
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Add it on the page that needs to use Loading or pop-up window (only cover the current page, if you need to cover TabView or NavigationView, please add it directly on the root View, such as ContentView())
.addHUD()
Various built-in pop-up windows
@State var loading = LoadingView(text: .constant(nil))
@State var loadingText = LoadingView(text: .constant("loading..."))
@State var fail = FailView(text: .constant(nil))
@State var succ = SuccessView(text: .constant(""))
Text and Progress need to bind external parameters, so they can be used like this
@State var progress: CGFloat = 0
@State var progressView: StepView?
@State var loadingText: String?
@State var loading: LoadingView?
//bind in place
.onAppear {
progressView = StepView(progress: $progress)
loading = LoadingView(text: $loadingText)
}
//Modify the current progress or loadingText and then it can change automatically
The rest only needs to be in the trigger position
Button {
loading.showHUD()
} label: {
Text("Loading Short Text")
}
or according to state control
.onChange(of: revenueCat.isPurchasing) { newValue in
if newValue{
loading.showHUD()
}else{
loading.hiddenHUD()
}
}
close HUD
.hiddenHUD()
There are many custom functions in the adapter
// Do you need a mask
var needMask: Bool = true
// popup window background color
var backgroundColour: Color = .clear
//The pop-up window ignores the safe area
var ignoresSafeArea: Bool = false
//Click outside the area to close the popup window
var touchOutsideToHidden: Bool = false
// rounded corner radian
var cornerRadius: CGFloat = 10
// Gesture off
var dragGestureProgressToClose: CGFloat = 1/3
// Gesture close animation
var dragGestureAnimation: Animation = .interactiveSpring()
// popup window background shadow color
var shadowColour: Color = .black.opacity(0.2)
var shadowRadius: CGFloat = 5
var shadowOffsetX: CGFloat = 0
var shadowOffsetY: CGFloat = 0
//The padding from the top, the default is 0, Top Popup will use it
var topPadding: CGFloat = 0
//The padding from the bottom, the default is 0, Bottom Popup will use it
var bottomPadding: CGFloat = 0
//Bottom PopupView automatically adds the height of the safe area
var bottomAutoHeight: Bool = false
//horizontal padding, the default is 0, most cases will be used by Center Popup
var horizontalPadding: CGFloat = 0
//The execution time of pop-up animation in the middle
var centerAnimationTime: CGFloat = 0.1
//Center PopupView pop-up animation ratio
var centerTransitionExitScale: CGFloat = 0.86
//Center PopupView pop-up animation ratio
var centerTransitionEntryScale: CGFloat = 1.1
// popup animation
var transitionAnimation: Animation = .spring(response: 0.32, dampingFraction: 1, blendDuration: 0.32)
//Stack style--exposed position--default 6
var stackViewsOffset: CGFloat = 6
//stack style -- scale
var stackViewsScale: CGFloat = 0.06
//stack style - rounded corners
var stackViewsCornerRadius: CGFloat = 10
//stack style--maximum heap display quantity
var maxStackCount: Int = 3
// Whether to automatically close
var autoHidden: Bool = false
//automatic shutdown waiting time
var autoHiddenTime: TimeInterval = 3
Please refer to Demo for the specific use of the code api and detailed effects
Starting from Xcode 11, the Swift Package Manager is integrated, which is very convenient to use. HUD also supports integration via Swift Package Manager.
Select File > Swift Packages > Add Pacakage Dependency
in Xcode's menu bar, and enter in the search bar
https://github.com/jackiehu/HUD
, you can complete the integration