Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Friend-LGA/LGAlertView
Customizable implementation of UIAlertViewController, UIAlertView and UIActionSheet. All in one. You can customize every detail. Make AlertView of your dream! :)
https://github.com/Friend-LGA/LGAlertView
action-sheet actionsheet alert-view alert-view-controller alertview alertviewcontroller carthage cocoapods ios lgalertview objective-c swift
Last synced: 3 months ago
JSON representation
Customizable implementation of UIAlertViewController, UIAlertView and UIActionSheet. All in one. You can customize every detail. Make AlertView of your dream! :)
- Host: GitHub
- URL: https://github.com/Friend-LGA/LGAlertView
- Owner: Friend-LGA
- License: mit
- Created: 2015-06-23T18:33:04.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-06-05T07:27:27.000Z (over 1 year ago)
- Last Synced: 2024-03-15T07:03:29.827Z (8 months ago)
- Topics: action-sheet, actionsheet, alert-view, alert-view-controller, alertview, alertviewcontroller, carthage, cocoapods, ios, lgalertview, objective-c, swift
- Language: Objective-C
- Homepage:
- Size: 1.71 MB
- Stars: 1,066
- Watchers: 31
- Forks: 215
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LGAlertView
Customizable implementation of UIAlertViewController, UIAlertView and UIActionSheet. All in one.
You can customize every detail. Make AlertView of your dream! :)[![Platform](https://img.shields.io/cocoapods/p/LGAlertView.svg)](https://github.com/Friend-LGA/LGAlertView)
[![CocoaPods](https://img.shields.io/cocoapods/v/LGAlertView.svg)](http://cocoadocs.org/docsets/LGAlertView)
[![Carthage](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg)](https://github.com/Friend-LGA/LGAlertView)
[![License](http://img.shields.io/cocoapods/l/LGAlertView.svg)](https://raw.githubusercontent.com/Friend-LGA/LGAlertView/master/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](https://github.com/Friend-LGA/LGAlertView/archive/master.zip), then add [LGAlertView directory](https://github.com/Friend-LGA/LGAlertView/blob/master/LGAlertView/) to your project.
Then import header files where you need to use the library
##### Objective-C
```objective-c
#import "LGAlertView.h"
```##### Swift
For swift you need to create [bridging header](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html)
```objective-c
// 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](https://cocoapods.org/).
#### Podfile
```ruby
platform :ios, '8.0'
use_frameworks!
pod 'LGAlertView'
```Then import framework where you need to use the library
##### Objective-C
```objective-c
#import
// OR
@import LGAlertView;
```##### Swift
```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](https://github.com/Carthage/Carthage/).
#### Cartfile
```
github "Friend-LGA/LGAlertView"
```Then import framework where you need to use the library
##### Objective-C
```objective-c
#import
// OR
@import LGAlertView;
```##### Swift
```swift
import LGAlertView
```## Usage
### Initialization
You have several methods for initialization:
##### Objective-C
```objective-c
- (nonnull instancetype)initWithTitle:(nullable NSString *)title
message:(nullable NSString *)message
style:(LGAlertViewStyle)style
buttonTitles:(nullable NSArray *)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 *)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 *)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 *)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 *)buttonTitles
cancelButtonTitle:(nullable NSString *)cancelButtonTitle
destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle;
```##### Swift
```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](https://github.com/Friend-LGA/LGAlertView/blob/master/LGAlertView/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
```objective-c
[LGAlertView appearance].tintColor = UIColor.greenColor;
[LGAlertView appearance].cancelOnTouch = NO;
[LGAlertView appearance].dismissOnAction = NO;
[LGAlertView appearance]...
[LGAlertView appearance]...
```##### Swift
```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
```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
```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
```objective-c
alertView.cancelButtonEnabled = YES;
alertView.destructiveButtonEnabled = YES;
[alertView setButtonEnabled:YES atIndex:0];
```##### Swift
```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
```objective-c
__weak typeof(self) wself = self;alertView.cancelHandler = ^(LGAlertView *alertView) {
__strong typeof(wself) sself = wself;[sself someMethod];
};
```##### Swift
```swift
alertView.cancelHandler = { [unowned self](alertView: LGAlertView) in
self.someMethod()
}
```### Blur
You can use UIBlurEffect with next properties:
```objective-c
UIBlurEffect *coverBlurEffect;
```For example:
##### Objective-C
```objective-c
alertView.coverBlurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleRegular];
```##### Swift
```swift
alertView.coverBlurEffect = UIBlurEffect(style: .regular)
```If you want to change color of blurred view, use:
```objective-c
UIColor *coverColor;
```For example:
##### Objective-C
```objective-c
alertView.coverColor = [UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:0.1];
```##### Swift
```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:
```objective-c
CGFloat coverAlpha;
```For example:
```objective-c
alertView.coverAlpha = 0.9;
```### Handle actions
To handle actions you can use blocks, delegate or notifications:
#### Delegate
##### Objective-C
```objective-c
@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
```swift
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
```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
```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
LGAlertViewDidShowNotificationLGAlertViewWillDismissNotification
LGAlertViewDidDismissNotificationLGAlertViewActionNotification
LGAlertViewCancelNotification
LGAlertViewDestructiveNotificationLGAlertViewDidDismissAfterActionNotification;
LGAlertViewDidDismissAfterCancelNotification;
LGAlertViewDidDismissAfterDestructiveNotification;LGAlertViewShowAnimationsNotification;
LGAlertViewDismissAnimationsNotification;
```### More
For more details try Xcode [Demo project](https://github.com/Friend-LGA/LGAlertView/blob/master/Demo) and see [LGAlertView.h](https://github.com/Friend-LGA/LGAlertView/blob/master/LGAlertView/LGAlertView.h)
## Frameworks
If you like LGAlertView, check out my other useful libraries:
* [LGSideMenuController](https://github.com/Friend-LGA/LGSideMenuController)
iOS view controller, shows left and right views by pressing button or gesture.
* [LGPlusButtonsView](https://github.com/Friend-LGA/LGPlusButtonsView)
Customizable iOS implementation of Floating Action Button (Google Plus Button, fab).## License
LGAlertView is released under the MIT license. See [LICENSE](https://raw.githubusercontent.com/Friend-LGA/LGAlertView/master/LICENSE) for details.