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
细节
动画效果是基于一个抽象的基类实现的。