• Stars
    star
    1,066
  • Rank 43,337 (Top 0.9 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Customizable implementation of UIAlertViewController, UIAlertView and UIActionSheet. All in one. You can customize every detail. Make AlertView of your dream! :)

LGAlertView

Customizable implementation of UIAlertViewController, UIAlertView and UIActionSheet. All in one. You can customize every detail. Make AlertView of your dream! :)

Platform CocoaPods Carthage License

Preview

Default Alert View

Default Action Sheet

Blurred Alert View

Blurred Action Sheet

Custom Alert View

Custom Action Sheet

Screenshots above are just few examples that you can achieve, you are free to create any other style

Installation

LGAlertView version iOS version
<= 2.0.13 >= 6.0
>= 2.1.0 >= 8.0

With source code

Download repository, then add LGAlertView directory to your project.

Then import header files where you need to use the library

Objective-C
#import "LGAlertView.h"
Swift

For swift you need to create bridging header

// BridgingHeader.h
#import "LGAlertView.h"

With CocoaPods

CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries in your projects. To install with cocoaPods, follow the "Get Started" section on CocoaPods.

Podfile

platform :ios, '8.0'
use_frameworks!
pod 'LGAlertView'

Then import framework where you need to use the library

Objective-C
#import <LGAlertView/LGAlertView.h>
// OR
@import LGAlertView;
Swift
import LGAlertView

With Carthage

Carthage is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods. To install with carthage, follow the instruction on Carthage.

Cartfile

github "Friend-LGA/LGAlertView"

Then import framework where you need to use the library

Objective-C
#import <LGAlertView/LGAlertView.h>
// OR
@import LGAlertView;
Swift
import LGAlertView

Usage

Initialization

You have several methods for initialization:

Objective-C
- (nonnull instancetype)initWithTitle:(nullable NSString *)title
                              message:(nullable NSString *)message
                                style:(LGAlertViewStyle)style
                         buttonTitles:(nullable NSArray<NSString *> *)buttonTitles
                    cancelButtonTitle:(nullable NSString *)cancelButtonTitle
               destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle;

- (nonnull instancetype)initWithViewAndTitle:(nullable NSString *)title
                                     message:(nullable NSString *)message
                                       style:(LGAlertViewStyle)style
                                        view:(nullable UIView *)view
                                buttonTitles:(nullable NSArray<NSString *> *)buttonTitles
                           cancelButtonTitle:(nullable NSString *)cancelButtonTitle
                      destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle;

- (nonnull instancetype)initWithActivityIndicatorAndTitle:(nullable NSString *)title
                                                  message:(nullable NSString *)message
                                                    style:(LGAlertViewStyle)style
                                             buttonTitles:(nullable NSArray<NSString *> *)buttonTitles
                                        cancelButtonTitle:(nullable NSString *)cancelButtonTitle
                                   destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle;

- (nonnull instancetype)initWithProgressViewAndTitle:(nullable NSString *)title
                                             message:(nullable NSString *)message
                                               style:(LGAlertViewStyle)style
                                   progressLabelText:(nullable NSString *)progressLabelText
                                        buttonTitles:(nullable NSArray<NSString *> *)buttonTitles
                                   cancelButtonTitle:(nullable NSString *)cancelButtonTitle
                              destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle;

- (nonnull instancetype)initWithTextFieldsAndTitle:(nullable NSString *)title
                                           message:(nullable NSString *)message
                                numberOfTextFields:(NSUInteger)numberOfTextFields
                            textFieldsSetupHandler:(LGAlertViewTextFieldsSetupHandler)textFieldsSetupHandler
                                      buttonTitles:(nullable NSArray<NSString *> *)buttonTitles
                                 cancelButtonTitle:(nullable NSString *)cancelButtonTitle
                            destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle;
Swift
public init(title: String?,
          message: String?,
            style: LGAlertViewStyle,
     buttonTitles: [String]?,
cancelButtonTitle: String?,
destructiveButtonTitle: String?)

public init(viewAndTitle title: String?,
                       message: String?,
                         style: LGAlertViewStyle,
                          view: UIView?,
                  buttonTitles: [String]?,
             cancelButtonTitle: String?,
        destructiveButtonTitle: String?)

public init(activityIndicatorAndTitle title: String?,
                                    message: String?,
                                      style: LGAlertViewStyle,
                               buttonTitles: [String]?,
                          cancelButtonTitle: String?,
                     destructiveButtonTitle: String?)

public init(progressViewAndTitle title: String?,
                               message: String?,
                                 style: LGAlertViewStyle,
                     progressLabelText: String?,
                          buttonTitles: [String]?,
                     cancelButtonTitle: String?,
                destructiveButtonTitle: String?)

public init(textFieldsAndTitle title: String?,
                             message: String?,
                  numberOfTextFields: UInt,
              textFieldsSetupHandler: LGAlertView.LGAlertViewTextFieldsSetupHandler?,
                        buttonTitles: [String]?,
                   cancelButtonTitle: String?,
              destructiveButtonTitle: String?)

More init methods you can find in LGAlertView.h

Setup

You can change properties only before you show alert view, after this to change something is impossible.

Appearance

Instead of change properties for every new alert view, you can use appearance to set them all only once and new alert views will use it by default:

Objective-C
[LGAlertView appearance].tintColor = UIColor.greenColor;
[LGAlertView appearance].cancelOnTouch = NO;
[LGAlertView appearance].dismissOnAction = NO;
[LGAlertView appearance]...
[LGAlertView appearance]...
Swift
LGAlertView.appearance().tintColor = .green
LGAlertView.appearance().cancelOnTouch = false
LGAlertView.appearance().dismissOnAction = false
LGAlertView.appearance()...
LGAlertView.appearance()...

Buttons

If you want to set properties for each button individually, you can use method:

Objective-C
- (void)setButtonPropertiesAtIndex:(NSUInteger)index handler:(void(^ _Nonnull)(LGAlertViewButtonProperties * _Nonnull properties))handler;

[alertView setButtonPropertiesAtIndex:0 handler:^(LGAlertViewButtonProperties * _Nonnull properties) {
    properties.titleColor = UIColor.yellowColor;
    properties.image = [UIImage imageNamed:@"SuperImage"];
    // properties...
    // properties...
}];
Swift
open func setButtonPropertiesAt(_ index: UInt, handler: @escaping (LGAlertViewButtonProperties) -> Swift.Void)

alertView.setButtonPropertiesAt(0) { (properties: LGAlertViewButtonProperties) in
    properties.titleColor = .yellow
    properties.image = UIImage(named: "SuperImage")
    // properties...
    // properties...
}

Enable / Disable

You can enable and disable buttons:

Objective-C
alertView.cancelButtonEnabled = YES;
alertView.destructiveButtonEnabled = YES;
[alertView setButtonEnabled:YES atIndex:0];
Swift
alertView.cancelButtonEnabled = true
alertView.destructiveButtonEnabled = true
alertView.setButtonEnabled(true, index: 0)

Retain Cycle

When you use blocks and if you need to use self inside it, then you need to make weak reference to self to avoid retain cycle:

Objective-C
__weak typeof(self) wself = self;

alertView.cancelHandler = ^(LGAlertView *alertView) {
    __strong typeof(wself) sself = wself;

    [sself someMethod];
};
Swift
alertView.cancelHandler = { [unowned self](alertView: LGAlertView) in
    self.someMethod()
}

Blur

You can use UIBlurEffect with next properties:

UIBlurEffect *coverBlurEffect;

For example:

Objective-C
alertView.coverBlurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleRegular];
Swift
alertView.coverBlurEffect = UIBlurEffect(style: .regular)

If you want to change color of blurred view, use:

UIColor *coverColor;

For example:

Objective-C
alertView.coverColor = [UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:0.1];
Swift
alertView.coverColor = UIColor(red: 0.0, green: 0.5, blue: 1.0, alpha: 0.1)

If you want to change intensity of blurred view, use:

CGFloat coverAlpha;

For example:

alertView.coverAlpha = 0.9;

Handle actions

To handle actions you can use blocks, delegate or notifications:

Delegate

Objective-C
<LGAlertViewDelegate>

@optional

- (void)alertViewWillShow:(nonnull LGAlertView *)alertView;
- (void)alertViewDidShow:(nonnull LGAlertView *)alertView;

- (void)alertViewWillDismiss:(nonnull LGAlertView *)alertView;
- (void)alertViewDidDismiss:(nonnull LGAlertView *)alertView;

- (void)alertView:(nonnull LGAlertView *)alertView clickedButtonAtIndex:(NSUInteger)index title:(nullable NSString *)title;
- (void)alertViewCancelled:(nonnull LGAlertView *)alertView;
- (void)alertViewDestructed:(nonnull LGAlertView *)alertView;

- (void)alertView:(nonnull LGAlertView *)alertView didDismissAfterClickedButtonAtIndex:(NSUInteger)index title:(nullable NSString *)title;
- (void)alertViewDidDismissAfterCancelled:(nonnull LGAlertView *)alertView;
- (void)alertViewDidDismissAfterDestructed:(nonnull LGAlertView *)alertView;

- (void)showAnimationsForAlertView:(nonnull LGAlertView *)alertView duration:(NSTimeInterval)duration;
- (void)dismissAnimationsForAlertView:(nonnull LGAlertView *)alertView duration:(NSTimeInterval)duration;
Swift
<LGAlertViewDelegate>

optional public func alertViewWillShow(_ alertView: LGAlertView)
optional public func alertViewDidShow(_ alertView: LGAlertView)

optional public func alertViewWillDismiss(_ alertView: LGAlertView)
optional public func alertViewDidDismiss(_ alertView: LGAlertView)

optional public func alertView(_ alertView: LGAlertView, clickedButtonAtIndex index: UInt, title: String?)
optional public func alertViewCancelled(_ alertView: LGAlertView)
optional public func alertViewDestructed(_ alertView: LGAlertView)

optional public func alertView(_ alertView: LGAlertView, didDismissAfterClickedButtonAtIndex index: UInt, title: String?)
optional public func alertViewDidDismissAfterCancelled(_ alertView: LGAlertView)
optional public func alertViewDidDismissAfterDestructed(_ alertView: LGAlertView)

optional public func showAnimationsForAlertView(_ alertView: LGAlertView, duration: NSTimeInterval)
optional public func dismissAnimationsForAlertView(_ alertView: LGAlertView, duration: NSTimeInterval)

Blocks

Objective-C
void(^ _Nullable willShowHandler)(LGAlertView * _Nonnull alertView);

void(^ _Nullable willShowHandler)(LGAlertView * _Nonnull alertView);
void(^ _Nullable didShowHandler)(LGAlertView * _Nonnull alertView);

void(^ _Nullable willDismissHandler)(LGAlertView * _Nonnull alertView);
void(^ _Nullable didDismissHandler)(LGAlertView * _Nonnull alertView);

void(^ _Nullable actionHandler)(LGAlertView * _Nonnull alertView, NSUInteger index, NSString * _Nullable title);
void(^ _Nullable cancelHandler)(LGAlertView * _Nonnull alertView);
void(^ _Nullable destructiveHandler)(LGAlertView * _Nonnull alertView);

void(^ _Nullable didDismissAfterActionHandler)(LGAlertView * _Nonnull alertView, NSUInteger index, NSString * _Nullable title);
void(^ _Nullable didDismissAfterCancelHandler)(LGAlertView * _Nonnull alertView);
void(^ _Nullable didDismissAfterDestructiveHandler)(LGAlertView * _Nonnull alertView);

void(^ _Nullable showAnimationsBlock)(LGAlertView * _Nonnull alertView, NSTimeInterval duration);
void(^ _Nullable dismissAnimationsBlock)(LGAlertView * _Nonnull alertView, NSTimeInterval duration);
Swift
open var willShowHandler: ((alertView: LGAlertView) -> Swift.Void)?
open var didShowHandler: ((alertView: LGAlertView) -> Swift.Void)?

open var willDismissHandler: ((alertView: LGAlertView) -> Swift.Void)?
open var didDismissHandler: ((alertView: LGAlertView) -> Swift.Void)?

open var actionHandler: ((alertView: LGAlertView, index: NSUInteger, title: NSString) -> Swift.Void)?
open var cancelHandler: ((alertView: LGAlertView) -> Swift.Void)?
open var destructiveHandler: ((alertView: LGAlertView) -> Swift.Void)?

open var didDismissAfterActionHandler: ((alertView: LGAlertView, index: NSUInteger, title: NSString) -> Swift.Void)?
open var didDismissAfterCancelHandler: ((alertView: LGAlertView) -> Swift.Void)?
open var didDismissAfterDestructiveHandler: ((alertView: LGAlertView) -> Swift.Void)?

open var showAnimationsBlock: ((alertView: LGAlertView, duration: NSTimeInterval) -> Swift.Void)?
open var dismissAnimationsBlock: ((alertView: LGAlertView, duration: NSTimeInterval) -> Swift.Void)?

Notifications

LGAlertViewWillShowNotification
LGAlertViewDidShowNotification

LGAlertViewWillDismissNotification
LGAlertViewDidDismissNotification

LGAlertViewActionNotification
LGAlertViewCancelNotification
LGAlertViewDestructiveNotification

LGAlertViewDidDismissAfterActionNotification;
LGAlertViewDidDismissAfterCancelNotification;
LGAlertViewDidDismissAfterDestructiveNotification;

LGAlertViewShowAnimationsNotification;
LGAlertViewDismissAnimationsNotification;

More

For more details try Xcode Demo project and see LGAlertView.h

Frameworks

If you like LGAlertView, check out my other useful libraries:

  • LGSideMenuController iOS view controller, shows left and right views by pressing button or gesture.
  • LGPlusButtonsView Customizable iOS implementation of Floating Action Button (Google Plus Button, fab).

License

LGAlertView is released under the MIT license. See LICENSE for details.

More Repositories

1

LGSideMenuController

iOS view controller which manages left and right side views
Swift
2,045
star
2

LGPlusButtonsView

iOS implementation of Floating Action Button (Google Plus Button, fab), that shows more options
Objective-C
405
star
3

LGRefreshView

iOS pull to refresh for UIScrollView, UITableView and UICollectionView
Objective-C
154
star
4

LGFilterView

View shows and applies different filters in iOS app
Objective-C
121
star
5

LGActionSheet

Customizable implementation of UIActionSheet
Objective-C
121
star
6

LGDrawer

iOS helper draws UIImages programmatically
Objective-C
72
star
7

LGViews

Classes extends abilities of UILabel, UIButton, UITextField and UITextView
Objective-C
55
star
8

LGPlaceholderView

View covers everything inside view controller, and shows some alert text, progress bar or other view, when you need to hide content
Objective-C
55
star
9

LGHelper

iOS helper contains a lot of useful macrosses, methods and hints for every day
Objective-C
29
star
10

LGRadioButtonsView

iOS implementation of radio buttons
Objective-C
26
star
11

LGAudioStreamHelper

iOS helper for easy recording audio stream, getting metadata and type of stream
Objective-C
23
star
12

LGConnection

iOS wrapper around AFNetworking makes it easy to use
Objective-C
14
star
13

LGSharing

iOS helper for easy sharing with email, message or social networks like facebook, twitter, google+ and vkontakte
Objective-C
14
star
14

LGHelper-NS

iOS helper extends NSArray, NSData, NSDate, NSDictionary and other NS* classes
Objective-C
13
star
15

LGViewControllers

Classes extends abilities of UITableViewController, UICollectionViewController, and more
Objective-C
12
star
16

LGHelper-UI

iOS helper extends UIColor, UIImage, UILabel, and other UI* classes
Objective-C
9
star
17

uni_course_cpp

C++
4
star
18

msu_course_cpp_323_2022

C++
3
star
19

Algorithms

Objective-C
3
star
20

Telegram-iOS

Swift
2
star
21

LinuxVM_forMacOS

Swift
2
star
22

online_game

Ruby
1
star