AlertView动画
效果
源码
https://github.com/YouXianMing/Animations
//
// AbstractAlertView.h
// Animations
//
// Created by YouXianMing on 16/1/2.
// Copyright © 2016年 YouXianMing. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@class AbstractAlertView;
@protocol AbstractAlertViewDelegate <NSObject>
/**
* The AlertView's event.
*
* @param alertView The AlertViewProtocol object.
* @param event Event data.
* @param index Event index.
*/
- (void)alertView:(AbstractAlertView *)alertView data:(id)data atIndex:(NSInteger)index;
@end
@interface AbstractAlertView : UIView
/**
* The AlertView event delegate.
*/
@property (nonatomic, weak) id <AbstractAlertViewDelegate> delegate;
/**
* The title, default is nil.
*/
@property (nonatomic, strong) NSString *title;
/**
* The subtitle, default is nil.
*/
@property (nonatomic, strong) NSString *subTitle;
/**
* The message, default is nil.
*/
@property (nonatomic, strong) NSString *message;
/**
* Button's title array, default is nil.
*/
@property (nonatomic, strong) NSArray <NSString *> *buttonsTitle;
/**
* The contentView.
*/
@property (nonatomic, weak) UIView *contentView;
/**
* Auto hiden or not, default is NO.
*/
@property (nonatomic) BOOL autoHiden;
/**
* If The autoHiden is YES, you should set the delay hiden duration, default is 2.0.
*/
@property (nonatomic) NSTimeInterval delayAutoHidenDuration;
/**
* Show the AlertView.
*/
- (void)show;
/**
* Hide the AlertView.
*/
- (void)hide;
/**
* Store View with key.
*
* @param view View.
* @param key Key.
*/
- (void)setView:(UIView *)view ForKey:(NSString *)key;
/**
* Get View with key.
*
* @param key Key.
*
* @return View.
*/
- (UIView *)viewWithKey:(NSString *)key;
@end
//
// AbstractAlertView.m
// Animations
//
// Created by YouXianMing on 16/1/2.
// Copyright © 2016年 YouXianMing. All rights reserved.
//
#import "AbstractAlertView.h"
@interface AbstractAlertView ()
@property (nonatomic, strong) NSMapTable *mapTable;
@end
@implementation AbstractAlertView
- (instancetype)init {
if (self = [super init]) {
self.delayAutoHidenDuration = 2.f;
self.autoHiden = NO;
self.mapTable = [NSMapTable strongToWeakObjectsMapTable];
}
return self;
}
- (void)show {
[NSException raise:@"AlertViewProtocol"
format:@"Cannot use show method from subclass."];
}
- (void)hide {
[NSException raise:@"AlertViewProtocol"
format:@"Cannot use hide method from subclass."];
}
- (void)setView:(UIView *)view ForKey:(NSString *)key {
[self.mapTable setObject:view forKey:key];
}
- (UIView *)viewWithKey:(NSString *)key {
return [self.mapTable objectForKey:key];
}
@end
细节
动画效果是基于一个抽象的基类实现的。