PopupWindow is a simple Popup using another UIWindow
- 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 |
---|---|---|---|---|
Add PopupWindow to your Podfile:
pod 'PopupWindow'
Add PopupWindow to your Cartfile:
github "shin8484/PopupWindow"
When displaying popup in another window, please call first PopupWindowManager
changeKeyWindow(rootViewController: UIViewController)
PopupWindowManager.shared.changeKeyWindow(rootViewController: UIViewController())
Create a PopupItem in the VC where you want to display the popup and call the method of the PopupPresentable
protocol
var popupItem: PopupItem = PopupItem(view: LoginView.view(),
frame: Const.firstViewFrame,
type: .rounded(cornerSize: 4),
direction: .top,
margin: 8,
hasBlur: true)
// Methods in PopupPresentable
setupPopupContainerView()
makePopupView(with: popupItem)
showPopupView(duration: Const.popupDuration, curve: .easeInOut, delayFactor: 0.0)
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 }
}
Specify hide animation direction with PopupViewDirection
dismissPopupView(duration: 3.3, curve: .easeInOut, delayFactor: 0.9, direction: .bottom) { _ in
PopupWindowManager.shared.changeKeyWindow(rootViewController: nil)
}
PopupItem is struct to set up a popup, View, size, direction, whether it is rounded, margin, blurred or not
struct PopupItem {
public let view: UIView
public let frame: CGRect
public let type: PopupViewType
public let direction: PopupViewDirection
public let margin: CGFloat
public let hasBlur: Bool
}
- iOS 10.0+
- Xcode 9.1+
- Swift 3.0.1+
Under the MIT license. See LICENSE file for details.