Dialog

Dialogs inform users about a specific task and may contain critical information, or require decisions or acknowledgement.

Backpack/Dialog

Cocoapods class reference view on Github

Success

Day Night

Warning

Day Night

Destructive

Day Night

Flare

Day Night

Image

Day Night

Usage

Example of a success dialog with three buttons


                                                
                                                // Basic definition
                                                let iconTemplate = BPKIcon.makeLargeTemplateIcon(name: .tick)
                                                let icon = BPKDialogIconDefinition(icon: iconTemplate, iconBackgroundColor: BPKColor.coreAccentColor)
                                                
                                                let dialogController = BPKDialogController(
                                                    title: "Title in here",
                                                    message: "Description",
                                                    iconDefinition: icon,
                                                    flareView: nil
                                                )
                                                
                                                // Dialog buttons
                                                let confirmation = BPKDialogButtonAction(title: "Confirmation", style: .featured) {_ in
                                                    // Handle tap
                                                }
                                                
                                                let skip = BPKDialogButtonAction(title: "Skip", style: .secondary) {_ in
                                                    // Handle tap
                                                }
                                                
                                                let optionalLink = BPKDialogButtonAction(title: "Optional link", style: .link) {_ in
                                                    // Handle tap
                                                }
                                                
                                                dialogController.addButtonAction(confirmation)
                                                dialogController.addButtonAction(skip)
                                                dialogController.addButtonAction(optionalLink)
                                                
                                                // Handling scrim tap
                                                // If you don't set this, the dialog is not dismissed when tapping the scrim
                                                let scrimAction = BPKDialogScrimAction(handler: { (didDismiss) in
                                                    print("Scrim tap \(didDismiss ? "dimissing" : "")")
                                                }, shouldDismiss: true)
                                                dialogController.scrimAction = scrimAction
                                                
                                                // Show the dialog
                                                self.present(dialogController, animated: true)

Example of a flare dialog


                                                
                                                // Flare view
                                                let flareView = BPKFlareView(frame: .zero)
                                                let image = UIImage(named: "dialog_flare")
                                                let imageView = UIImageView.init(image: image)
                                                imageView.contentMode = .scaleAspectFill
                                                imageView.translatesAutoresizingMaskIntoConstraints = false
                                                
                                                // Basic definition
                                                let iconTemplate = BPKIcon.makeLargeTemplateIcon(name: .tick)
                                                let icon = BPKDialogIconDefinition(icon: iconTemplate, iconBackgroundColor: BPKColor.coreAccentColor)
                                                
                                                let dialogController = BPKDialogController(
                                                    title: "Title in here",
                                                    message: "Description",
                                                    iconDefinition: icon,
                                                    flareView: flareView
                                                )
                                                
                                                // Dialog buttons
                                                let confirmation = BPKDialogButtonAction(title: "Confirmation", style: .featured) {_ in
                                                    // Handle tap
                                                }
                                                
                                                let skip = BPKDialogButtonAction(title: "Skip", style: .secondary) {_ in
                                                    // Handle tap
                                                }
                                                
                                                let optionalLink = BPKDialogButtonAction(title: "Optional link", style: .link) {_ in
                                                    // Handle tap
                                                }
                                                
                                                dialogController.addButtonAction(confirmation)
                                                dialogController.addButtonAction(skip)
                                                dialogController.addButtonAction(optionalLink)
                                                
                                                // Handling scrim tap
                                                // If you don't set this, the dialog is not dismissed when tapping the scrim
                                                let scrimAction = BPKDialogScrimAction(handler: { (didDismiss) in
                                                    print("Scrim tap \(didDismiss ? "dimissing" : "")")
                                                }, shouldDismiss: true)
                                                dialogController.scrimAction = scrimAction
                                                
                                                // Show the dialog
                                                self.present(dialogController, animated: true)

Example of an image dialog


                                                
                                                // Image view
                                                let image = UIImage(named: "dialog_image")
                                                let imageView = UIImageView.init(image: image)
                                                imageView.contentMode = .scaleAspectFill
                                                imageView.translatesAutoresizingMaskIntoConstraints = false
                                                
                                                // Basic definition
                                                let iconTemplate = BPKIcon.makeLargeTemplateIcon(name: .tick)
                                                let icon = BPKDialogIconDefinition(icon: iconTemplate, iconBackgroundColor: BPKColor.coreAccentColor)
                                                
                                                let dialogController = BPKDialogController(
                                                    title: "Title in here",
                                                    message: "Description",
                                                    imageView: imageView,
                                                    textAlignment: .left
                                                )
                                                
                                                // Dialog buttons
                                                let confirmation = BPKDialogButtonAction(title: "Confirmation", style: .featured) {_ in
                                                    // Handle tap
                                                }
                                                
                                                let skip = BPKDialogButtonAction(title: "Skip", style: .secondary) {_ in
                                                    // Handle tap
                                                }
                                                
                                                let optionalLink = BPKDialogButtonAction(title: "Optional link", style: .link) {_ in
                                                    // Handle tap
                                                }
                                                
                                                dialogController.addButtonAction(confirmation)
                                                dialogController.addButtonAction(skip)
                                                dialogController.addButtonAction(optionalLink)
                                                
                                                // Handling scrim tap
                                                // If you don't set this, the dialog is not dismissed when tapping the scrim
                                                let scrimAction = BPKDialogScrimAction(handler: { (didDismiss) in
                                                    print("Scrim tap \(didDismiss ? "dimissing" : "")")
                                                }, shouldDismiss: true)
                                                dialogController.scrimAction = scrimAction
                                                
                                                // Show the dialog
                                                self.present(dialogController, animated: true)