All Projects → Friend-LGA → Lgalertview

Friend-LGA / Lgalertview

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

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Lgalertview

Tbactionsheet
A Custom&Powerful Action Sheet For iOS. 一个 ActionSheet 满足所有样式!超高自由度的可定制!
Stars: ✭ 942 (-8.28%)
Mutual labels:  cocoapods, carthage, actionsheet
Sheeeeeeeeet
Sheeeeeeeeet is a Swift library for creating menus, custom action sheets, context menus etc.
Stars: ✭ 1,177 (+14.61%)
Mutual labels:  cocoapods, carthage, actionsheet
Cdalertview
Highly customizable alertview and alert/notification/success/error/alarm popup written in Swift
Stars: ✭ 1,056 (+2.82%)
Mutual labels:  cocoapods, carthage, alertview
Alertift
Swifty, modern UIAlertController wrapper.
Stars: ✭ 242 (-76.44%)
Mutual labels:  cocoapods, carthage, actionsheet
Popmenu
A fully customizable popup style menu for iOS 😎
Stars: ✭ 1,155 (+12.46%)
Mutual labels:  cocoapods, carthage, actionsheet
Sclalertview
Beautiful animated Alert View. Written in Objective-C
Stars: ✭ 3,426 (+233.59%)
Mutual labels:  cocoapods, carthage, alertview
Swiftysound
SwiftySound is a simple library that lets you play sounds with a single line of code.
Stars: ✭ 995 (-3.12%)
Mutual labels:  cocoapods, carthage
Tkswitchercollection
An animation switch collection
Stars: ✭ 877 (-14.61%)
Mutual labels:  cocoapods, carthage
Sica
🦌 Simple Interface Core Animation. Run type-safe animation sequencially or parallelly
Stars: ✭ 980 (-4.58%)
Mutual labels:  cocoapods, carthage
Swiftlyext
SwiftlyExt is a collection of useful extensions for Swift 3 standard classes and types 🚀
Stars: ✭ 31 (-96.98%)
Mutual labels:  cocoapods, carthage
Cascadingtabledelegate
A no-nonsense way to write cleaner UITableViewDelegate and UITableViewDataSource in Swift.
Stars: ✭ 931 (-9.35%)
Mutual labels:  cocoapods, carthage
Ctpanoramaview
A library that displays spherical or cylindrical panoramas with touch or motion based controls.
Stars: ✭ 951 (-7.4%)
Mutual labels:  cocoapods, carthage
Sketchkit
A lightweight auto-layout DSL library for iOS & tvOS.
Stars: ✭ 40 (-96.11%)
Mutual labels:  cocoapods, carthage
Imagescout
A Swift implementation of fastimage. Supports PNG, GIF, and JPEG.
Stars: ✭ 940 (-8.47%)
Mutual labels:  cocoapods, carthage
Quiver
Validation, searching and filtering made easy for swift.
Stars: ✭ 27 (-97.37%)
Mutual labels:  cocoapods, carthage
Mixpanel Iphone
iPhone tracking library for Mixpanel Analytics
Stars: ✭ 939 (-8.57%)
Mutual labels:  cocoapods, carthage
Avsqldebugger
A Simple Core Data Debugger that will look inside your apps DB
Stars: ✭ 30 (-97.08%)
Mutual labels:  cocoapods, carthage
Fontblaster
Programmatically load custom fonts into your iOS and tvOS app.
Stars: ✭ 1,000 (-2.63%)
Mutual labels:  cocoapods, carthage
Wstagsfield
An iOS text field that represents tags, hashtags, tokens in general.
Stars: ✭ 1,013 (-1.36%)
Mutual labels:  cocoapods, carthage
Gaugekit
Kit for building custom gauges + easy reproducible Apple's style ring gauges.
Stars: ✭ 997 (-2.92%)
Mutual labels:  cocoapods, carthage

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].