AZDialogViewController alternatives and similar libraries
Based on the "Popup" category.
Alternatively, view AZDialogViewController 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. -
PopupView
Toasts and popups library written with SwiftUI -
KLCPopup
A simple and flexible class for presenting custom views as a popup in iOS. -
MIBlurPopup
MIBlurPopup lets you create popups with a blurred background -
PopupController
PopupController is a controller for showing temporary popup view. -
PopupWindow
PopupWindow is a simple Popup using another UIWindow in Swift -
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 Firebase alternative introduces iOS support
* 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 AZDialogViewController or a related project?
README
AZDialogViewController
A highly customizable alert dialog controller that mimics Snapchat's alert dialog.
Screenshots
Installation
CocoaPods:
pod 'AZDialogView'
Carthage:
github "Minitour/AZDialogViewController"
Manual:
Simply drag and drop the Sources
folder to your project.
Usage
Create an instance of AZDialogViewController:
//init with optional parameters
let dialog = AZDialogViewController(title: "Antonio Zaitoun", message: "minitour")
Customize:
//set the title color
dialog.titleColor = .black
//set the message color
dialog.messageColor = .black
//set the dialog background color
dialog.alertBackgroundColor = .white
//set the gesture dismiss direction
dialog.dismissDirection = .bottom
//allow dismiss by touching the background
dialog.dismissWithOutsideTouch = true
//show seperator under the title
dialog.showSeparator = false
//set the seperator color
dialog.separatorColor = UIColor.blue
//enable/disable drag
dialog.allowDragGesture = false
//enable rubber (bounce) effect
dialog.rubberEnabled = true
//set dialog image
dialog.image = UIImage(named: "icon")
//enable/disable backgroud blur
dialog.blurBackground = true
//set the background blur style
dialog.blurEffectStyle = .dark
//set the dialog offset (from center)
dialog.contentOffset = self.view.frame.height / 2.0 - dialog.estimatedHeight / 2.0 - 16.0
Add Actions:
dialog.addAction(AZDialogAction(title: "Edit Name") { (dialog) -> (Void) in
//add your actions here.
dialog.dismiss()
})
dialog.addAction(AZDialogAction(title: "Remove Friend") { (dialog) -> (Void) in
//add your actions here.
dialog.dismiss()
})
dialog.addAction(AZDialogAction(title: "Block") { (dialog) -> (Void) in
//add your actions here.
dialog.dismiss()
})
Add Image:
dialog.imageHandler = { (imageView) in
imageView.image = UIImage(named: "your_image_here")
imageView.contentMode = .scaleAspectFill
return true //must return true, otherwise image won't show.
}
Custom View
/*
customViewSizeRatio is the precentage of the height in respect to the width of the view.
i.e. if the width is 100 and we set customViewSizeRatio to be 0.2 then the height will be 20.
The default value is 0.0.
*/
dialog.customViewSizeRatio = 0.2
//Add the subviews
let container = dialog.container
let indicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
dialog.container.addSubview(indicator)
//add constraints
indicator.translatesAutoresizingMaskIntoConstraints = false
indicator.centerXAnchor.constraint(equalTo: container.centerXAnchor).isActive = true
indicator.centerYAnchor.constraint(equalTo: container.centerYAnchor).isActive = true
indicator.startAnimating()
Present The dialog:
dialog.show(in: self)
//or
//Make sure to have animated set to false otherwise you'll see a delay.
self.present(dialog, animated: false, completion: nil)
Show with completion
dialog.show(in: self) { dialog in
// show and then change the offset
dialog.contentOffset = self.view.frame.height / 2.0 - dialog.estimatedHeight / 2.0 + 15
}
Design
Change Dialog Width
This has been a requested feature and so I decided to add it. You can change the width of the dialog frame as a ratio in respect to the width of the main view. This can only be doing using the initalizer and the width cannot be modified afterwards.
let dialog = AZDialogViewController(title: "Switch Account", message: "My Message", widthRatio: 1.0)
This will display a dialog which has the same width as the the controller it is presented in.
The default value is 0.75
Customize Action Buttons Style:
dialog.buttonStyle = { (button,height,position) in
button.setBackgroundImage(UIImage.imageWithColor(self.primaryColorDark), for: .highlighted)
button.setTitleColor(UIColor.white, for: .highlighted)
button.setTitleColor(self.primaryColor, for: .normal)
button.layer.masksToBounds = true
button.layer.borderColor = self.primaryColor.cgColor
}
Use custom UIButton sub-class:
dialog.buttonInit = { index in
//set a custom button only for the first index
return index == 0 ? HighlightableButton() : nil
}
Customize Tool Buttons:
dialog.rightToolStyle = { (button) in
button.setImage(UIImage(named: "ic_share"), for: [])
button.tintColor = .lightGray
return true
}
dialog.rightToolAction = { (button) in
print("Share function")
}
dialog.leftToolStyle = { (button) in
button.setImage(UIImage(named: "ic_share"), for: [])
button.tintColor = .lightGray
return true
}
dialog.leftToolAction = { (button) in
print("Share function")
}
Customize Cancel Button Style:
dialog.cancelEnabled = true
dialog.cancelButtonStyle = { (button,height) in
button.tintColor = self.primaryColor
button.setTitle("CANCEL", for: [])
return true //must return true, otherwise cancel button won't show.
}