A Swift based reimplementation of the Apple HUD (Volume, Ringer, Rotation,…) for iOS 8.

Overview

Build Status License Platform CocoaPod SPM compatible Carthage compatible

PKHUD - Swift and easy

A Swift based reimplementation of the Apple HUD (Volume, Ringer, Rotation,…) for iOS 8 and up.

Features

  • Official iOS 8 blur effect via UIVisualEffectsView.
  • Proper rotation support.
  • Size / Device agnostic.
  • Works on top of presented view controllers, alerts,...
  • Comes with several free resources - Checkmark, Cross, Progress Indicator,…
  • …as well as animated ones.
  • Builds as an iOS 8 framework.

PKHUD.gif

Installation

The recommended way is to use CocoaPods.

CocoaPods

To install PKHUD for Swift 2 using CocoaPods, include the following in your Podfile

pod 'PKHUD', '~> 3.0'

To install PKHUD for Swift 3.x using CocoaPods, include the following in your Podfile

pod 'PKHUD', '~> 4.0'

To install PKHUD for Swift 4.x, include the following in your Podfile

pod 'PKHUD', '~> 5.0'

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate PKHUD into your Xcode project using Carthage, specify it in your Cartfile:

github "pkluz/PKHUD" ~> 4.0

Run carthage update to build the framework and drag the built PKHUD.framework into your Xcode project.

Swift Package Manager

To install using Swift Package Manager, add this to the dependencies: section in your Package.swift file:

.package(url: "https://github.com/pkluz/PKHUD.git", .upToNextMinor(from: "5.4.0")),

How To

After adding the framework to your project, you need to import the module

import PKHUD

Now, you can proceed to show an arbitrary HUD (and have it automatically disappear a second later) like this:

HUD.flash(.success, delay: 1.0)

or with a completion handler:

HUD.flash(.success, delay: 1.0) { finished in 
    // Completion Handler
}

alternatively, you can use the more verbose and flexible “plumbing” API:

PKHUD.sharedHUD.contentView = PKHUDSuccessView()
PKHUD.sharedHUD.show()
PKHUD.sharedHUD.hide(afterDelay: 1.0) { success in 
    // Completion Handler
}

You can also hot-swap content views - this can prove useful if you want to display a progress HUD first and transform it into a success or error HUD after an asynchronous operation has finished.

HUD.show(.progress)
        
// Now some long running task starts...
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
    // ...and once it finishes we flash the HUD for a second.
   HUD.flash(.success, delay: 1.0)
}

Please note that there are multiple types of content views that ship with PKHUD. You can find them as separate files in the project folder as well as in the ContentViews group in Xcode.

Communication (Hat Tip AlamoFire)

  • If you need help, use Stack Overflow. (Tag 'pkhud')
  • If you'd like to ask a general question, use Stack Overflow.
  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Customization

There are two properties at your disposal to customize general behavior.

  • PKHUD.sharedHUD.dimsBackground: Bool defines whether the background is slightly dimmed when the HUD is shown.

  • PKHUD.sharedHUD.userInteractionOnUnderlyingViewsEnabled: Bool defines whether the underlying views respond to touches while the HUD is shown.

Additionally you are free to create you own custom content views. They can descend from any UIView type or the predefined base classes PKHUDSquareBaseView and PKHUDWideBaseView.

Note: It's neither possible to customize the general look and feel, nor do I plan to add that feature. You are free to provide any content views you wish but the blurring, corner radius and shading will remain the same.

Credits

PKHUD is owned and maintained by Philip Kluz. Other mantainers are:

Xamarin

If you are Xamarin developer you can use this port.

License

The MIT License (MIT)

Copyright (c) 2015 Philip Kluz ([email protected])

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 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.

Comments
  • Add grace time support

    Add grace time support

    Grace period is the time (in seconds) that the invoked method may be run without showing the HUD. If the task finishes before the grace time runs out, the HUD will not be shown at all. This may be used to prevent HUD display for very short tasks. Defaults to 0 (no grace time). like MBProgressHUD.

    enhancement help wanted in review 
    opened by isaced 16
  • Refactoring adding init

    Refactoring adding init

    Maybe this PR is not ready to be merge, but I've done a general refactoring moving

    • imageView
    • titleLabel
    • subtitleLabel
    • layoutSubviews

    to PKHUDSquareBaseView and with a new init with optional values is possible to create all the possible combination of HUD (for example PKHUDSuccessView with title, only subtitle of both). simulator screen shot 18 gen 2016 21 44 29 simulator screen shot 18 gen 2016 21 46 31 simulator screen shot 18 gen 2016 21 47 04 simulator screen shot 18 gen 2016 21 47 25 simulator screen shot 18 gen 2016 21 49 14

    Some classes (PKHUDTitleView, PKHUDSubtitleView, PKHUDStatusView, PKHUDStatusProgressView) became obsolete but I think that only PKHUDStatusProgressView should be removed for compatibility reason.

    WIP 
    opened by PGLongo 16
  • Add compatibility to Swift 4.2 on Xcode 10 GM

    Add compatibility to Swift 4.2 on Xcode 10 GM

    Fixed the 2 errors thrown by Xcode 10 GM on 5.1.0 version of PKHUD with Swift version set to 4.2.

    Both fixes required minimal changes (just one init and one enum that got renamed).

    opened by edisonlsm 14
  • Swift 3

    Swift 3

    Hello and thanks for this framework,

    Is there a Swift 3 branch on its way?

    I can't use it with Xcode 8 and Swift 3 beta and Cocoapods... Or couldn't find how to.

    Thanks!

    opened by Tulleb 14
  • Present the HUD over a specific view

    Present the HUD over a specific view

    I have a tab bar based app. When I want to present the progress HUD I only want to block the interaction with the VC in which the user is performing an operation. I want to block the interaction with that VC, but not with the tab bar.

    I would like to be able to specify the view/vc to present the HUD on top of.

    Thanks

    enhancement 
    opened by clacladev 12
  • xcode 8.3 swift 3 warnings

    xcode 8.3 swift 3 warnings

    @pkluz there are some warnings in the latest xcode 8.3

    PKHUDAnimation.swift:19:41: 'M_PI' is deprecated: Please use 'Double.pi' or '.pi' to get the value of correct type and avoid casting.

    NSNumber(value: 1.0 * Float(M_PI) / 6.0 as Float),

    opened by alexookah 11
  • Hud Resize

    Hud Resize

    A new feature very requested is the capability of changing the size of the HUD.

    Maybe we could add a constant file, for instance the size of PKHUDSquareBaseView is 156x156 so we would have:

    enum PKHUDSize {
      static let PKHUDSquareBaseViewWidth = 156.0
      static let PKHUDSquareBaseViewHeight = 156.0
    // or even better     static let PKHUDSquareBaseViewSize = CGSize(width: 156.0, height: 156.0)
    
    }
    

    So

    static let defaultSquareBaseViewFrame = CGRect(origin: CGPoint.zero, size: CGSize(width: 156.0, height: 156.0))
    

    So

    static let defaultSquareBaseViewFrame = CGRect(origin: CGPoint.zero, size: CGSize(width: 156.0, height: 156.0))
    ....
     public init(image: UIImage? = nil, title: String? = nil, subtitle: String? = nil) {
            super.init(frame: PKHUDSquareBaseView.defaultSquareBaseViewFrame)
            ...
        }
    

    Became

    156.0))
     public init(image: UIImage? = nil, title: String? = nil, subtitle: String? = nil) {
            let frame = CGRect(origin: CGPoint.zero, size: CGSize(width: PKHUDSize.PKHUDSquareBaseViewWidth, height: PKHUDSize.PKHUDSquareBaseViewHeight)
            super.init(frame: frame)
            ...
        }
    
    enhancement help wanted question 
    opened by PGLongo 10
  • Animating Protocol is Package-Protected

    Animating Protocol is Package-Protected

    I was trying to implement a custom view (very similar to the one used by default, but at a bigger size, and some margins on the title label), however, the animation protocol is currently not public, and so I cannot implement it with my custom view. Would you be open to a pull request to fix this?

    It seems like, without the above, custom views would not work nearly as well.

    @objc protocol PKHUDAnimating {
    
        func startAnimation()
        optional func stopAnimation()
    }
    
    opened by cody1024d 9
  • Title on Error or Success

    Title on Error or Success

    This is a nice extension, but I find it painfully difficult to use.

    Not sure how swift works, but I don't want to type sharedHud

    I would like it to work more like this https://github.com/relatedcode/ProgressHUD

    It should be PKHUD.show("String") then PKHUD.success

    And at least give me a chance to put a title in the error for god sakes.

    enhancement 
    opened by benjaminhallock 9
  • BlurEffect can't change Alpha

    BlurEffect can't change Alpha

    As discussed in this pull request: https://github.com/pkluz/PKHUD/pull/5

    I'm still receiving an warning:

    2014-09-16 14:29:47.912 PKHUD Demo[50313:10503170] <PKHUD.FrameView 0x7fa053e609d0> is being asked to animate its opacity. This will cause the effect to appear broken until opacity returns to 1.
    

    It appears PKHUD is trying to animate the Alpha of the FrameView, while it's a subclass of UIVisualEffectView. The documentation of the VisualEffectView states the following:

    Setting the Correct Alpha Value
    When using the UIVisualEffectView class, avoid alpha values that are less than 1.
    Creating views that are partially transparent causes the system to combine the view 
    and all the associated subviews during an offscreen render pass. UIVisualEffectView 
    objects need to be combined as part of the content they are layered on top of in order
    to look correct. Setting the alpha to less than 1 on the visual effect view or any of its 
    superviews causes many effects to look incorrect or not show up at all.
    

    So to solve this notification, the alpha fading must be done differently.

    Any suggestions?

    Cheers, //Michael

    help wanted 
    opened by MichMich 9
  • Crash in Xcode version 9.0 (9A235) showing PKHUDProgressView

    Crash in Xcode version 9.0 (9A235) showing PKHUDProgressView

    Xcode version 9.0 (9A235) Swift 3.2 Running on iPhone X Simulator

    Line of code executed:

    HUD.show(.labeledProgress(title: "Loading contacts...", subtitle: nil)) })

    Log of crash:

    2017-09-15 16:57:57.852845-0400 redactedAppName[31636:558237] *** Assertion failure in -[PKHUD.FrameView _addSubview:positioned:relativeTo:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3694.4.18/UIVisualEffectView.m:1464
    2017-09-15 16:57:57.880328-0400 redactedAppName[31636:558237] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<PKHUD.PKHUDProgressView: 0x7fa3a4597630; frame = (0 0; 156 156); clipsToBounds = YES; alpha = 0.85; layer = <CALayer: 0x60000042df60>> has been added as a subview to <PKHUD.FrameView: 0x7fa3a4578580; baseClass = UIVisualEffectView; frame = (0 0; 156 156); clipsToBounds = YES; autoresize = LM+RM+TM+BM; layer = <CALayer: 0x60000042a820>>. Do not add subviews directly to the visual effect view itself, instead add them to the -contentView.'
    *** First throw call stack:
    (
    	0   CoreFoundation                      0x000000011083d1cb __exceptionPreprocess + 171
    	1   libobjc.A.dylib                     0x000000010fa2cf41 objc_exception_throw + 48
    	2   CoreFoundation                      0x0000000110842362 +[NSException raise:format:arguments:] + 98
    	3   Foundation                          0x000000010bc01089 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
    	4   UIKit                               0x000000010ded243f -[UIVisualEffectView _addSubview:positioned:relativeTo:] + 379
    	5   PKHUD                               0x000000010d1c04a5 _T05PKHUDAAC11contentViewSo6UIViewCfsTf4gn_n + 373
    	6   PKHUD                               0x000000010d1bc06f _T05PKHUD3HUDC4showyAA14HUDContentTypeOFZ + 303
    	7   redactedAppName                           0x00000001096e6fd8 _T09redactedAppName22ContactsViewControllerC04loadC07RxSwift10ObservableCyAA0C5EventOGyFySbcfU_ + 152
    	8   redactedAppName                           0x00000001096e6ff9 _T0Sbs5Error_pIxyzo_SbsAA_pIxizo_TR + 25
    	9   redactedAppName                           0x00000001096f1df3 _T0Sbs5Error_pIxyzo_SbsAA_pIxizo_TRTA + 83
    	10  RxSwift                             0x000000010d460482 _T07RxSwift14ObservableTypePAAE2doAA0C0Cy1EQzGyAHKcSg6onNext_ys5Error_pKcSg0fH0yyKcSg0F9CompletedyycSg0F9SubscribeAQ0F7DisposetFyAA5EventOyAHGKcfU_ + 370
    	11  RxSwift                             0x000000010d460662 _T07RxSwift14ObservableTypePAAE2doAA0C0Cy1EQzGyAHKcSg6onNext_ys5Error_pKcSg0fH0yyKcSg0F9CompletedyycSg0F9SubscribeAQ0F7DisposetFyAA5EventOyAHGKcfU_TA + 162
    	12  RxSwift                             0x000000010d44e735 _T07RxSwift6DoSinkC2onyAA5EventOy1EQzGF + 277
    	13  RxSwift                             0x000000010d44eac4 _T07RxSwift6DoSinkCyxGAA12ObserverTypeA2aERzlAaEP2onyAA5EventOy1EQzGFTW + 36
    	14  RxSwift                             0x000000010d463c91 _T07RxSwift32ObserveOnSerialDispatchQueueSinkCACyxGAA0efG9SchedulerC9scheduler_x8observerAA10Cancelable_p6canceltcfcAA10Disposable_pAD_AA5EventOy1EQzGtcfU_ + 241
    	15  RxSwift                             0x000000010d464659 _T07RxSwift32ObserveOnSerialDispatchQueueSinkCACyxGAA0efG9SchedulerC9scheduler_x8observerAA10Cancelable_p6canceltcfcAA10Disposable_pAD_AA5EventOy1EQzGtcfU_TA + 9
    	16  RxSwift                             0x000000010d46470c _T07RxSwift32ObserveOnSerialDispatchQueueSinkCyxGAA5EventOy1EQzGAA10Disposable_pIxxir_AD_AItAaJ_pIxir_AA12ObserverTypeRzlTRTA + 140
    	17  RxSwift                             0x000000010d457bea _T07RxSwift13MainSchedulerC16scheduleInternalAA10Disposable_px_AaE_pxc6actiontlF + 250
    	18  RxSwift                             0x000000010d48322b _T07RxSwift28SerialDispatchQueueSchedulerC8scheduleAA10Disposable_px_AaE_pxc6actiontlF + 75
    	19  RxSwift                             0x000000010d463fb6 _T07RxSwift32ObserveOnSerialDispatchQueueSinkC6onCoreyAA5EventOy1EQzGF + 566
    	20  RxSwift                             0x000000010d4648e3 _T07RxSwift12ObserverBaseC2onyAA5EventOyxGF + 403
    	21  RxSwift                             0x000000010d464b94 _T07RxSwift12ObserverBaseCyxGAA0C4TypeAAlAaEP2onyAA5EventOy1EQzGFTW + 36
    	22  RxSwift                             0x000000010d456891 _T07RxSwift4JustC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 161
    	23  RxSwift                             0x000000010d464456 _T07RxSwift28ObserveOnSerialDispatchQueueC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__RszAA12ObserverTypeRd__lF + 198
    	24  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	25  RxSwift                             0x000000010d44ecb5 _T07RxSwift2DoC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__RszAA12ObserverTypeRd__lF + 261
    	26  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	27  RxSwift                             0x000000010d45b070 _T07RxSwift9MergeSinkC3runAA10Disposable_pAA10ObservableCyxGF + 432
    	28  RxSwift                             0x000000010d45c757 _T07RxSwift7FlatMapC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6canceltAA12ObserverTypeRd__1EQyd__AKRt_lFTm + 263
    	29  RxSwift                             0x000000010d45c148 _T07RxSwift7FlatMapC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6canceltAA12ObserverTypeRd__1EQyd__AKRt_lF + 24
    	30  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	31  RxSwift                             0x000000010d45b070 _T07RxSwift9MergeSinkC3runAA10Disposable_pAA10ObservableCyxGF + 432
    	32  RxSwift                             0x000000010d45c757 _T07RxSwift7FlatMapC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6canceltAA12ObserverTypeRd__1EQyd__AKRt_lFTm + 263
    	33  RxSwift                             0x000000010d45c148 _T07RxSwift7FlatMapC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6canceltAA12ObserverTypeRd__1EQyd__AKRt_lF + 24
    	34  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	35  RxSwift                             0x000000010d459132 _T07RxSwift3MapC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__Rs_AA12ObserverTypeRd__lF + 242
    	36  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	37  RxSwift                             0x000000010d425188 _T07RxSwift9CatchSinkC3runAA10Disposable_pyF + 952
    	38  RxSwift                             0x000000010d425aa4 _T07RxSwift5CatchC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__RszAA12ObserverTypeRd__lF + 100
    	39  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	40  RxSwift                             0x000000010d464456 _T07RxSwift28ObserveOnSerialDispatchQueueC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__RszAA12ObserverTypeRd__lF + 198
    	41  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	42  RxSwift                             0x000000010d44ecb5 _T07RxSwift2DoC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__RszAA12ObserverTypeRd__lF + 261
    	43  RxSwift                             0x000000010d467f85 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 389
    	44  RxSwift                             0x000000010d464456 _T07RxSwift28ObserveOnSerialDispatchQueueC3runAA10Disposable_p4sink_AaE_p12subscriptiontqd___AA10Cancelable_p6cancelt1EQyd__RszAA12ObserverTypeRd__lF + 198
    	45  RxSwift                             0x000000010d4682cc _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lFAaE_pycfU_ + 364
    	46  RxSwift                             0x000000010d468c93 _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lFAaE_pycfU_TA + 83
    	47  RxSwift                             0x000000010d4407ef _T07RxSwift22CurrentThreadSchedulerC8scheduleAA10Disposable_px_AaE_pxc6actiontlFyt_Tg504_T07a7Swift10G20_pIxr_ytAaB_pIxir_TRAaE_pIxr_Tf1nncn_n + 527
    	48  RxSwift                             0x000000010d4680dd _T07RxSwift8ProducerC9subscribeAA10Disposable_pqd__1EQyd__RszAA12ObserverTypeRd__lF + 733
    	49  RxSwift                             0x000000010d461c82 _T07RxSwift14ObservableTypePAAE9subscribeAA10Disposable_py1EQzcSg6onNext_ys5Error_pcSg0gI0yycSg0G9CompletedAM0G8DisposedtF + 690
    	50  redactedAppName                           0x00000001096e1e49 _T09redactedAppName22ContactsViewControllerC04loadC15AndHandleResult33_16DC83E487ECD90299D7E27593AF19EFLLyyF + 489
    	51  redactedAppName                           0x00000001096dd17a _T09redactedAppName22ContactsViewControllerC6handleyAA0C5EventO5event_tF + 15098
    	52  redactedAppName                           0x00000001096d95e6 _T09redactedAppName22ContactsViewControllerCAcA0C5PropsV5props_tcfcySayypGcfU_ + 70
    	53  redactedAppName                           0x00000001096d967a _T09redactedAppName22ContactsViewControllerCAcA0C5PropsV5props_tcfcySayypGcfU_TA + 58
    	54  redactedAppName                           0x00000001096dd1ff _T0SayypGIxx_AAIxi_TR + 15
    	55  redactedAppName                           0x00000001096dd292 _T0SayypGIxx_AAIxi_TRTA + 66
    	56  RxSwift                             0x000000010d462078 _T07RxSwift14ObservableTypePAAE9subscribeAA10Disposable_py1EQzcSg6onNext_ys5Error_pcSg0gI0yycSg0G9CompletedAM0G8DisposedtFyAA5EventOyAGGcfU_Tf4ngggg_n + 312
    	57  RxSwift                             0x000000010d461db9 _T07RxSwift14ObservableTypePAAE9subscribeAA10Disposable_py1EQzcSg6onNext_ys5Error_pcSg0gI0yycSg0G9CompletedAM0G8DisposedtFyAA5EventOyAGGcfU_ + 57
    	58  RxSwift                             0x000000010d461f2c _T07RxSwift14ObservableTypePAAE9subscribeAA10Disposable_py1EQzcSg6onNext_ys5Error_pcSg0gI0yycSg0G9CompletedAM0G8DisposedtFyAA5EventOyAGGcfU_TA + 172
    	59  RxSwift                             0x000000010d41a277 _T07RxSwift17AnonymousObserverC6onCoreyAA5EventOyxGF + 39
    	60  RxSwift                             0x000000010d4648e3 _T07RxSwift12ObserverBaseC2onyAA5EventOyxGF + 403
    	61  RxSwift                             0x000000010d464b94 _T07RxSwift12ObserverBaseCyxGAA0C4TypeAAlAaEP2onyAA5EventOy1EQzGFTW + 36
    	62  RxSwift                             0x000000010d488168 _T07RxSwift4SinkC9forwardOnyAA5EventOy1EQzGF + 120
    	63  RxSwift                             0x000000010d492ea3 _T07RxSwift13TakeCountSinkC2onyAA5EventOy1EQzGF + 531
    	64  RxSwift                             0x000000010d4930f4 _T07RxSwift13TakeCountSinkCyxGAA12ObserverTypeA2aERzlAaEP2onyAA5EventOy1EQzGFTW + 36
    	65  RxSwift                             0x000000010d464ee2 _T0TA + 82
    	66  RxSwift                             0x000000010d41a455 _T07RxSwift11AnyObserverV2onyAA5EventOyxGF + 37
    	67  RxSwift                             0x000000010d41a4ab _T07RxSwift11AnyObserverVyxGAA0D4TypeAAlAaEP2onyAA5EventOy1EQzGFTW + 43
    	68  RxSwift                             0x000000010d41ba3c _T07RxSwift3BagVA2A12ObserverTypeRzlE2onyAA5EventOy1EQzGF + 636
    	69  RxSwift                             0x000000010d4690eb _T07RxSwift14PublishSubjectC2onyAA5EventOyxGF + 299
    	70  RxCocoa                             0x000000010d2ba588 _T07RxCocoa16MessageSentProxy33_F7515DBB13B60709A3CB25DD19EDD11DLLC13methodInvokedySayypG13withArguments_tFTo + 120
    	71  RxCocoa                             0x000000010d29b7c8 RX_forward_invocation + 236
    	72  RxCocoa                             0x000000010d29b67b __71-[RXObjCRuntime(InfrastructureMethods) swizzleForwardInvocation:error:]_block_invoke_2 + 44
    	73  CoreFoundation                      0x00000001107bfed8 ___forwarding___ + 760
    	74  CoreFoundation                      0x00000001107bfb58 _CF_forwarding_prep_0 + 120
    	75  UIKit                               0x000000010da889b0 -[UIViewController _setViewAppearState:isAnimating:] + 444
    	76  UIKit                               0x000000010da89245 -[UIViewController __viewWillAppear:] + 147
    	77  UIKit                               0x000000010dab522c -[UINavigationController _startCustomTransition:] + 1195
    	78  UIKit                               0x000000010dacb894 -[UINavigationController _startDeferredTransitionIfNeeded:] + 686
    	79  UIKit                               0x000000010daccb90 -[UINavigationController __viewWillLayoutSubviews] + 115
    	80  UIKit                               0x000000010dd232ae -[UILayoutContainerView layoutSubviews] + 231
    	81  UIKit                               0x000000010d9b3551 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1331
    	82  QuartzCore                          0x00000001117254ba -[CALayer layoutSublayers] + 153
    	83  QuartzCore                          0x00000001117295a9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
    	84  QuartzCore                          0x00000001116b21cd _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 365
    	85  QuartzCore                          0x00000001116ddae4 _ZN2CA11Transaction6commitEv + 500
    	86  QuartzCore                          0x00000001116de830 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 76
    	87  CoreFoundation                      0x00000001107dfdb7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    	88  CoreFoundation                      0x00000001107dfd0e __CFRunLoopDoObservers + 430
    	89  CoreFoundation                      0x00000001107c4324 __CFRunLoopRun + 1572
    	90  CoreFoundation                      0x00000001107c3a89 CFRunLoopRunSpecific + 409
    	91  GraphicsServices                    0x00000001140339c6 GSEventRunModal + 62
    	92  UIKit                               0x000000010d8e4d30 UIApplicationMain + 159
    	93  redactedAppName                           0x000000010976e997 main + 55
    	94  libdyld.dylib                       0x00000001126b5d81 start + 1
    )
    libc++abi.dylib: terminating with uncaught exception of type NSException
    
    opened by alexwillingham 8
  • Bump addressable from 2.5.2 to 2.8.1

    Bump addressable from 2.5.2 to 2.8.1

    Bumps addressable from 2.5.2 to 2.8.1.

    Changelog

    Sourced from addressable's changelog.

    Addressable 2.8.1

    • refactor Addressable::URI.normalize_path to address linter offenses (#430)
    • remove redundant colon in Addressable::URI::CharacterClasses::AUTHORITY regex (#438)
    • update gemspec to reflect supported Ruby versions (#466, #464, #463)
    • compatibility w/ public_suffix 5.x (#466, #465, #460)
    • fixes "invalid byte sequence in UTF-8" exception when unencoding URLs containing non UTF-8 characters (#459)
    • Ractor compatibility (#449)
    • use the whole string instead of a single line for template match (#431)
    • force UTF-8 encoding only if needed (#341)

    #460: sporkmonger/addressable#460 #463: sporkmonger/addressable#463 #464: sporkmonger/addressable#464 #465: sporkmonger/addressable#465 #466: sporkmonger/addressable#466

    Addressable 2.8.0

    • fixes ReDoS vulnerability in Addressable::Template#match
    • no longer replaces + with spaces in queries for non-http(s) schemes
    • fixed encoding ipv6 literals
    • the :compacted flag for normalized_query now dedupes parameters
    • fix broken escape_component alias
    • dropping support for Ruby 2.0 and 2.1
    • adding Ruby 3.0 compatibility for development tasks
    • drop support for rack-mount and remove Addressable::Template#generate
    • performance improvements
    • switch CI/CD to GitHub Actions

    Addressable 2.7.0

    • added :compacted flag to normalized_query
    • heuristic_parse handles mailto: more intuitively
    • dropped explicit support for JRuby 9.0.5.0
    • compatibility w/ public_suffix 4.x
    • performance improvements

    Addressable 2.6.0

    • added tld= method to allow assignment to the public suffix
    • most heuristic_parse patterns are now case-insensitive
    • heuristic_parse handles more file:// URI variations
    • fixes bug in heuristic_parse when uri starts with digit
    • fixes bug in request_uri= with query strings
    • fixes template issues with nil and ? operator
    • frozen_string_literal pragmas added
    • minor performance improvements in regexps
    • fixes to eliminate warnings
    Commits
    • 8657465 Update version, gemspec, and CHANGELOG for 2.8.1 (#474)
    • 4fc5bb6 CI: remove Ubuntu 18.04 job (#473)
    • 860fede Force UTF-8 encoding only if needed (#341)
    • 99810af Merge pull request #431 from ojab/ct-_do_not_parse_multiline_strings
    • 7ce0f48 Merge branch 'main' into ct-_do_not_parse_multiline_strings
    • 7ecf751 Merge pull request #449 from okeeblow/freeze_concatenated_strings
    • 41f12dd Merge branch 'main' into freeze_concatenated_strings
    • 068f673 Merge pull request #459 from jarthod/iso-encoding-problem
    • b4c9882 Merge branch 'main' into iso-encoding-problem
    • 08d27e8 Merge pull request #471 from sporkmonger/sporkmonger-enable-codeql
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump tzinfo from 1.2.5 to 1.2.10

    Bump tzinfo from 1.2.5 to 1.2.10

    Bumps tzinfo from 1.2.5 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    v1.2.9

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    TZInfo v1.2.9 on RubyGems.org

    v1.2.8

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    TZInfo v1.2.8 on RubyGems.org

    v1.2.7

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    TZInfo v1.2.7 on RubyGems.org

    v1.2.6

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.

    TZInfo v1.2.6 on RubyGems.org

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Version 1.2.9 - 16-Dec-2020

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    Version 1.2.8 - 8-Nov-2020

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    Version 1.2.7 - 2-Apr-2020

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    Version 1.2.6 - 24-Dec-2019

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.
    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump cocoapods-downloader from 1.2.1 to 1.6.3

    Bump cocoapods-downloader from 1.2.1 to 1.6.3

    Bumps cocoapods-downloader from 1.2.1 to 1.6.3.

    Release notes

    Sourced from cocoapods-downloader's releases.

    1.6.3

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1

    Enhancements
    • None.
    Bug Fixes
    • Fix "can't modify frozen string" errors when pods are integrated using the branch option
      buju77 #10920

    1.5.0

    ... (truncated)

    Changelog

    Sourced from cocoapods-downloader's changelog.

    1.6.3 (2022-04-01)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2 (2022-03-28)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1 (2022-03-23)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0 (2022-03-22)

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1 (2021-09-07)

    Enhancements
    • None.

    ... (truncated)

    Commits
    • c03e2ed Release 1.6.3
    • f75bccc Disable Bazaar tests due to macOS 12.3 not including python2
    • 52a0d54 Merge pull request #128 from CocoaPods/validate_before_dl
    • d27c983 Ensure that the git pre-processor doesn't accidentally bail also
    • 3adfe1f [CHANGELOG] Add empty Master section
    • 591167a Release 1.6.2
    • d2564c3 Merge pull request #127 from CocoaPods/validate_before_dl
    • 99fec61 Switches where we check for invalid input, to move it inside the download fun...
    • 96679f2 [CHANGELOG] Add empty Master section
    • 3a7c54b Release 1.6.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • PKHUD.show(onView:) is crashing with iOS 15

    PKHUD.show(onView:) is crashing with iOS 15

    Did anybody observed crash with PKHUD.show(onView:) on iOS 15?

    Can someone recommend something to resolve this crash

    Crashlogs:

    `Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000001, 0x000000010264298c Exception Note: EXC_CORPSE_NOTIFY Termination Reason: SIGNAL; [5] Terminating Process: exc handler [815]

    Terminating Process: exc handler [815] Triggered by Thread: 0

    Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 PKHUD 0x10264298c PKHUD.show(onView:) + 956 1 PKHUD 0x102642678 PKHUD.show(onView:) + 168 2 PKHUD 0x102640b54 static HUD.show(:onView:) + 144 3 my_App 0x1016cb304 0x100dd8000 + 9384708 4 my_App 0x101528d48 0x100dd8000 + 7671112 5 my_App 0x101526658 0x100dd8000 + 7661144 6 my_App 0x101525d28 0x100dd8000 + 7658792 7 my_App 0x1013d7c40 0x100dd8000 + 6290496 8 my_App 0x101581b30 0x100dd8000 + 8035120 9 my_App 0x101581c7c 0x100dd8000 + 8035452 10 IntuneMAMSwift 0x108eb1664 0x108c90000 + 2233956 11 IntuneMAMSwift 0x108ca4c10 0x108c90000 + 85008 12 IntuneMAMSwift 0x108e390f0 0x108c90000 + 1741040 13 IntuneMAMSwift 0x108e38de4 0x108c90000 + 1740260 14 IntuneMAMSwift 0x108e39a24 0x108c90000 + 1743396 15 IntuneMAMSwift 0x108eae9d8 0x108c90000 + 2222552 16 IntuneMAMSwift 0x108eb0ab0 0x108c90000 + 2230960 17 ADAL 0x101dade24 __swizzle_ApplicationOpenURLiOS9 + 300 18 UIKitCore 0x18370881c __58-[UIApplication _applicationOpenURLAction:payload:origin:]block_invoke + 804 19 UIKitCore 0x1835ea1d0 -[UIApplication _applicationOpenURLAction:payload:origin:] + 892 20 UIKitCore 0x1835c58c4 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:] + 5040 21 UIKitCore 0x183566d50 -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 496 22 UIKitCore 0x1835aa524 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 288 23 UIKitCore 0x183534370 -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 492 24 FrontBoardServices 0x192a54100 -[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:] + 528 25 FrontBoardServices 0x192a6cd4c __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]block_invoke_2 + 152 26 FrontBoardServices 0x192a516b4 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240 27 FrontBoardServices 0x192a57b10 __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]block_invoke + 396 28 libdispatch.dylib 0x180beb660 dispatch_client_callout + 20 29 libdispatch.dylib 0x180bef118 dispatch_block_invoke_direct + 264 30 FrontBoardServices 0x192a52f94 FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 48 31 FrontBoardServices 0x192a523d4 -[FBSSerialQueue _targetQueue_performNextIfPossible] + 220 32 FrontBoardServices 0x192a569e4 -[FBSSerialQueue _performNextFromRunLoopSource] + 28 33 CoreFoundation 0x180f9b020 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 28 34 CoreFoundation 0x180fabce0 __CFRunLoopDoSource0 + 208 35 CoreFoundation 0x180ee5fe8 __CFRunLoopDoSources0 + 268 36 CoreFoundation 0x180eeb7f4 __CFRunLoopRun + 820 37 CoreFoundation 0x180eff3b8 CFRunLoopRunSpecific + 600 38 GraphicsServices 0x19c88f38c GSEventRunModal + 164 39 UIKitCore 0x18389f6a8 -[UIApplication _run] + 1100 40 UIKitCore 0x18361e7f4 UIApplicationMain + 2092 41 IntuneMAMSwiftStub 0x108c7a1a8 cmarRealUIApplicationMain(::::) + 96 42 IntuneMAMSwift 0x108f17294 cmarHookedUIApplicationMain(::::) + 216 43 securelinegen2_intune 0x100eac808 0x100dd8000 + 870408 44 dyld 0x101d05a24 start + 520 `

    opened by arsalangolestanekh 22
  • dimsBackground is false,but PKHUD.sharedHUD not hidden container.backgroundView

    dimsBackground is false,but PKHUD.sharedHUD not hidden container.backgroundView

    if last show container.backgroundView, and hide animated is false, container.backgroundView not hidden.

    then dimsBackground set false, container.backgroundView hidden status not change true

    open func show(onView view: UIView? = nil) {
            let view: UIView = view ?? viewToPresentOn ?? UIApplication.shared.keyWindow!
            if  !view.subviews.contains(container) {
                view.addSubview(container)
                container.frame.origin = CGPoint.zero
                container.frame.size = view.frame.size
                container.autoresizingMask = [ .flexibleHeight, .flexibleWidth ]
                container.isHidden = true
            }
            if dimsBackground {
                container.showBackground(animated: true)
            }
    // dimsBackground == false, this not call  container.hideBackground(animated: false)
    
    opened by xdkhan 0
Releases(5.4.0)
Owner
Philip Kluz
Philip Kluz
Simple Swift Progress HUD

MKProgress An iOS Simple Swift Progress HUD Requirements iOS 9.0+ Swift 3.0+ Xcode 8.0+ Installation MKProgress is only available via CocoaPods: pod '

Muhammad Kamran 143 Dec 23, 2022
This is a beauful hud view for iPhone & iPad

WSProgressHUD This is a beauful hud view for iPhone & iPad Usage To Download the project. Run the WSProgressHUD.xcodeproj in the demo directory. [

Wilson 583 Dec 6, 2022
Simple HUD.

VHUD Simple HUD. VHUD is inspired by PKHUD. Example Show import VHUD func example() { var content = VHUDContent(.loop(3.0)) content.loadingText =

Airin 138 Jan 24, 2021
Completely customizable progress based loaders drawn using custom CGPaths written in Swift

FillableLoaders Completely customizable progress based loaders drawn using custom CGPaths written in Swift Waves Plain Spike Rounded Demo: Changelog:

Pol Quintana 2.1k Dec 31, 2022
A beautiful activity indicator and modal alert written in Swift (originally developed for my app DoodleDoodle) Using blur effects, translucency, flat and bold design - all iOS 8 latest and greatest

SwiftSpinner SwiftSpinner is an extra beautiful activity indicator with plain and bold style. It uses dynamic blur and translucency to overlay the cur

Marin Todorov 2.1k Dec 19, 2022
The easiest way to handle a simple full screen activity indicator in iOS. Written in Swift.

LLSpinner An easy way to handle full screen activity indicator. Easy to use Get Started // Show spinner LLSpinner.spin() // Hide spinner LLSpinner.st

Aleph Retamal 36 Dec 9, 2021
A view class for iOS that makes uploading easy and beautiful.

SVUploader A view class for iOS that makes uploading easy and beautiful. Demo SVUploader is fully customizable - check out 2 demos. Installation Just

Kiran 79 Apr 18, 2022
Flexible Stepped Progress Bar for IOS

FlexibleSteppedProgressBar This is a stepped progress bar for IOS. The base code is derived from ABSteppedProgressBar. Most of the design is customisa

Amrata Baghel 549 Jan 6, 2023
A lightweight and awesome loading Activity Indicator for your iOS app.

BPCircleActivityIndicator BPCircleActivityIndicator is a clean and easy-to-use Activity Indicator meant to display the progress of an ongoing task on

Ben.Park 46 Aug 12, 2022
A simple and awesome loading Activity Indicator(with block moving animation) for your iOS app.

BPBlockActivityIndicator BPBlockActivityIndicator is a clean and easy-to-use Activity Indicator meant to display the progress of an ongoing task on iO

Ben.Park 43 Nov 6, 2021
Material Linear Progress Bar for your iOS apps

LinearProgressBar Material Linear Progress Bar for your iOS apps Installation Carthage: github "Recouse/LinearProgressBar" CocoaPods: Add this to you

Firdavs Khaydarov 161 Dec 5, 2022
A metaball loading written in Swift.

DBMetaballLoading Synopsis A metaball loading written in Swift. Special thanks to dodola's MetaballLoading, which is an android project. The animation

ChildhoodAndy 72 Jul 2, 2022
A simple animated progress bar in Swift

DSGradientProgressView Introduction DSGradientProgressView is a simple and customizable animated progress bar written in Swift. Inspired by GradientPr

Dhol Studio 445 Oct 13, 2022
Awesome loading animations using 3D engine written with Swift

RSLoadingView Introduction RSLoadingView bring your app to the new age of loading animations using 3D engine. Written with Swift Customizable Using Ap

null 419 Dec 16, 2022
McPicker is a customizable, closure driven UIPickerView drop-in solution with animations that is rotation ready.

McPicker About McPicker is a UIPickerView drop-in solution with animations that is rotation ready. The more string arrays you pass, the more picker co

Kevin McGill 207 Dec 13, 2022
A modern HUD inspired by Apple Music and Apple Podcasts

HUD A modern HUD inspired by Apple Music and Apple Podcasts. Appearance Light Dark HUD Activity Indicator HUD Requirements iOS 13+ Installation You ca

Bei Li 30 Nov 18, 2022
🖥 Control your display's brightness & volume on your Mac as if it was a native Apple Display

?? Control your display's brightness & volume on your Mac as if it was a native Apple Display. Use Apple Keyboard keys or custom shortcuts. Shows the native macOS OSDs.

null 20k Dec 29, 2022
A custom-designed reimplementation of the UIActionSheet control for iOS

TOActionSheet TOActionSheet is an iOS UI control providing a modal prompt control, similar to UIActionSheet. Unlike UIActionSheet, it can be very heav

Tim Oliver 172 Nov 17, 2022
Reimplementation of the famous screen saver

Padbury Clock Revived The Padbury Clock is a minimalist screensaver created by Robert Padbury. It has not been updated in ages and actually broke for

Hans 12 Dec 27, 2022
DevToys for iPad - a SwiftUI reimplementation of DevToys, a Swiss Army Knife for developers, for iPadOS

DevToys for iPad - a SwiftUI reimplementation of DevToys, a Swiss Army Knife for developers, for iPadOS

Kenta Kubo 25 Nov 5, 2022