PopupWindow alternatives and similar libraries
Based on the "Popup" category.
Alternatively, view PopupWindow alternatives based on common mentions on social networks and blogs.
-
SwiftEntryKit
SwiftEntryKit is a presentation library for iOS. It can be used to easily display overlays within your iOS apps. -
PopupDialog
A simple, customizable popup dialog for iOS written in Swift. Replaces UIAlertController alert style. -
LNPopupController
LNPopupController is a framework for presenting view controllers as popups of other view controllers, much like the Apple Music and Podcasts apps. -
STPopup
STPopup provides STPopupController, which works just like UINavigationController in popup style, for both iPhone and iPad. It's written in Objective-C and compatible with Swift. -
MMPopupView
Pop-up based view(e.g. alert sheet), can be easily customized. -
CNPPopupController
Simple and versatile class for presenting a custom popup in a variety of fashions. It includes a many options for controlling how your popup appears and behaves. -
KLCPopup
A simple and flexible class for presenting custom views as a popup in iOS. -
AZDialogViewController
A highly customizable alert dialog controller that mimics Snapchat's alert dialog. -
MIBlurPopup
MIBlurPopup lets you create popups with a blurred background -
PopupController
PopupController is a controller for showing temporary popup view. -
SubscriptionPrompt
Subscription View Controller like the Tinder uses -
NMPopUpView
Simple Swift class for iOS that shows nice popup windows with animation. -
PBPopupController
A framework for presenting bars and view controllers as popup, much like the look and feel of Apple Music App. -
PopupKit
Simple way to present custom views as a popup in iOS and tvOS.
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of PopupWindow or a related project?
README
PopupWindow
PopupWindow is a simple Popup using another UIWindow
Feature
- PopupWindow can be displayed at the top or bottom of the screen.
- Popup can set margins, cornerRadius, blur, etc.
- When displaying blur, you can't touch the below contents.
- By erasing blur, you can touch the below contents.
- Popup are displayed on another window, so you can leave Popup even when screen transitions.
TopToast | BottomToast | TopCard | BottomCard | Example |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Installation
CocoaPods
Add PopupWindow to your Podfile:
pod 'PopupWindow'
Carthage
Add PopupWindow to your Cartfile:
github "shin8484/PopupWindow"
Usage
When displaying popup in another window, please call first PopupWindowManager
changeKeyWindow(rootViewController: UIViewController)
PopupWindowManager.shared.changeKeyWindow(rootViewController: UIViewController())
Create and show show
Create a PopupItem in the ViewController where you want to display the popup and call the method of BasePopupViewController
let popupOption = PopupOption(shapeType: .roundedCornerTop(cornerSize: 8), viewType: .toast, direction: .bottom)
let popupItem = PopupItem(view: loginView,
height: Const.firstViewFrame.height,
maxWidth: 500,
popupOption: popupOption)
First popup implementation is included in BasePopupViewController's loadView
, viewDidAppear
.
If you want to create the next popup, please call showPopupView()
.
class SampleViewController: BasePopupViewController {
override open func loadView() {
super.loadView()
setupPopupContainerView()
}
override open func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
makePopupView(with: item)
showPopupView(duration: item.duration, curve: .easeInOut, delayFactor: 0.0)
}
}
Transform & Replace
Replace the display contents, and perform deformation to the specified size.
By using PopupItem
, you can specify content contents and size.
transformPopupView(duration: Const.transformDuration, curve: .easeInOut, popupItem: popupItem) { [weak self] _ in
guard let me = self else { return }
me.replacePopupView(with: popupItem)
me.dismissPopupView(duration: 3.3, curve: .easeInOut, delayFactor: 0.9, direction: .top) { _ in }
}
Dismiss
Specify hide animation direction with PopupViewDirection
dismissPopupView(duration: 3.3, curve: .easeInOut, delayFactor: 0.9, direction: .bottom) { _ in
PopupWindowManager.shared.changeKeyWindow(rootViewController: nil)
}
PopupItem
PopupItem and PopupOption are struct to set up a popup, View, size, direction, whether it is rounded, margin, blurred or not, duration, maxWidth, type
public struct PopupItem {
public let view: UIView
public let height: CGFloat
public let maxWidth: CGFloat
public let landscapeSize: CGSize?
public let popupOption: PopupOption
}
public struct PopupOption {
public let shapeType: ShapeType
public let viewType: ViewType
public let direction: PopupViewDirection
public let margin: CGFloat
public let hasBlur: Bool
public let duration: TimeInterval
public let canTapDismiss: Bool
}
Landscape
maxWidth
By setting maxWidth with popupitem's initializer, you can set the maximum width of the popup in landscape mode.
landscapeSize
You can set popup size at landscape. The size changes only when landscape size is set, and the default is nil. Using landscapeSize and SizeClass, you can customize PopupVIew that has the widest width like GIF below when rotating.
Requirements
- iOS 10.0+
- Xcode 9.1+
- Swift 3.0.1+
LICENSE
Under the MIT license. See LICENSE file for details.
*Note that all licence references and agreements mentioned in the PopupWindow README section above
are relevant to that project's source code only.