AlertView动画

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

细节

动画效果是基于一个抽象的基类实现的。

原文地址:https://www.cnblogs.com/YouXianMing/p/5094308.html