iOS_第3方類庫_BlurAlertView_GPUImage,gpuimage

來源:互聯網
上載者:User

iOS_第3方類庫_BlurAlertView_GPUImage,gpuimage
最終:

先添加GPUImage.framework








匯入BlurAlertView的類聲明和類實現

////  BlurAlertView.h//  特效彈出框////  Created by beyond on 14-10-18.//  Copyright (c) 2014年 com.beyond All rights reserved.//#import <UIKit/UIKit.h>// 必須先匯入GPUImage.framework#import <GPUImage/GPUImage.h>@class BlurAlertView;@protocol BlurAlertViewDelegate;typedef NS_ENUM(NSInteger, BlurAlertViewAnimationType){    BlurAlertViewAnimationTypeBounce,    BlurAlertViewAnimationTypeDrop};typedef NS_ENUM(NSInteger, BlurAlertViewContentType){    BlurAlertViewContentTypeText,    BlurAlertViewContentTypeCustomView};@interface BlurAlertView : UIView@property (nonatomic,strong) UIButton *okButton;@property (nonatomic,strong) UIButton *cancelButton;@property (nonatomic,assign) BlurAlertViewAnimationType animationType;@property (nonatomic,weak) id<BlurAlertViewDelegate> delegate;@property(nonatomic,copy) void(^completionBlock)(BlurAlertView *alertView,UIButton *button);- (id)initWithTitle:(NSString *)title text:(NSString *)text cancelButton:(BOOL)hasCancelButton;- (id)initWithTitle:(NSString *)title contentView:(UIView *)contentView cancelButton:(BOOL)hasCancelButton;- (void)show;- (void)dismiss;@end@protocol BlurAlertViewDelegate <NSObject>@optional-(void) alertView:(BlurAlertView *)alertView didDismissWithButton:(UIButton *)button;-(void) alertViewWillShow:(BlurAlertView *)alertView;-(void) alertViewDidShow:(BlurAlertView *)alertView;-(void) alertViewWillDismiss:(BlurAlertView *)alertView;-(void) alertViewDidDismiss:(BlurAlertView *)alertView;@end// 隆重介紹 使用方式/********************Title and Text: BlurAlertView *alertView = [[BlurAlertView alloc] initWithTitle:@"title" text:@"this is text" cancelButton:YES color:[UIColor blueColor]];  //set animation type alertView.animationType = BlurAlertViewAnimationTypeDrop;  [alertView setCompletionBlock:^(BlurAlertView *alert, UIButton *button) { if (button == alert.okButton) { NSLog(@"ok button touched!"); }else{ NSLog(@"cancel button touched!"); } }]; [alertView show];*//***************Custom content view:UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 180, 180)];contentView.backgroundColor = [UIColor blackColor];BlurAlertView *alertView = [[BlurAlertView alloc] initWithTitle:@"title" contentView:contentView cancelButton:YES color:[UIColor blueColor]];[alertView show];*/



////  BlurAlertView.m//  特效彈出框////  Created by beyond on 14-10-18.//  Copyright (c) 2014年 com.beyond All rights reserved.//static const float AlertViewTitleLabelHeight = 44.0;static const float AlertViewSpaceHeight = 10;static const float AlertViewDefaultTextFontSize = 16;/*Default Colors*/#define RJTitleLabelBackgroundColor [UIColor colorWithRed:0.20392156862745098 green:0.596078431372549 blue:0.8588235294117647 alpha:1.0]#define RJComfirmButtonColor [UIColor colorWithRed:0.20392156862745098 green:0.596078431372549 blue:0.8588235294117647 alpha:1.0]#define screenBounds [[UIScreen mainScreen] bounds]#define IS_IOS7_Or_Later [[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0#import "BlurAlertView.h"@interface BlurAlertView ()@property (nonatomic,strong) GPUImageiOSBlurFilter *blurFilter;@property (nonatomic,strong) UIView *alertView;@property (nonatomic,strong) UIImageView *backgroundView;@property (nonatomic,strong) UILabel *titleLabel;@property (nonatomic,strong) UILabel *textLabel;@property (nonatomic,assign) CGSize contentSize;@property (nonatomic,assign) BlurAlertViewContentType contentType;@property (nonatomic,strong) UIView *contentView;@end@implementation BlurAlertView- (id)initWithTitle:(NSString *)title contentView:(UIView *)contentView cancelButton:(BOOL)hasCancelButton{    self = [super initWithFrame:screenBounds];    if (self) {        self.opaque = YES;        self.alpha = 1;        _contentType = BlurAlertViewContentTypeCustomView;        _contentView = contentView;        [self _setupViewsWithTitle:title text:nil cancelButton:hasCancelButton];    }    return self;}- (id)initWithTitle:(NSString *)title text:(NSString *)text cancelButton:(BOOL)hasCancelButton{    self = [super initWithFrame:screenBounds];    if (self) {        self.opaque = YES;        self.alpha = 1;        _contentType = BlurAlertViewContentTypeText;        [self _setupViewsWithTitle:title text:text cancelButton:hasCancelButton];    }    return self;}#pragma mark - Show and Dismiss- (void)show{    if ([self.delegate respondsToSelector:@selector(alertViewWillShow:)]) {        [self.delegate alertViewWillShow:self];    }        switch (self.animationType) {        case BlurAlertViewAnimationTypeBounce:            [self triggerBounceAnimations];            break;        case BlurAlertViewAnimationTypeDrop:            [self triggerDropAnimations];            break;        default:            break;    }    [[[[UIApplication sharedApplication] delegate] window] addSubview:self];}- (void)dismiss{    if ([self.delegate respondsToSelector:@selector(alertViewWillDismiss:)]) {        [self.delegate alertViewWillDismiss:self];    }        [UIView animateWithDuration:0.4                          delay:0.0                        options: UIViewAnimationOptionCurveEaseInOut                     animations:^{                         self.alpha = 0;                     }                     completion:^(BOOL finished){                         [self removeFromSuperview];                         if ([self.delegate respondsToSelector:@selector(alertViewDidDismiss:)]){                             [self.delegate alertViewDidDismiss:self];                         }                     }];}#pragma mark - Animations- (void) triggerBounceAnimations{        self.alertView.alpha = 0;    self.alertView.center = CGPointMake(CGRectGetWidth(screenBounds)/2, (CGRectGetHeight(screenBounds)/2));        CAKeyframeAnimation * animation;    animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];    animation.duration = 0.3f;    //animation.delegate = self;    animation.removedOnCompletion = NO;    animation.fillMode = kCAFillModeForwards;    NSMutableArray *values = [NSMutableArray array];    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]];    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]];    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]];    animation.values = values;    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];    [self.alertView.layer addAnimation:animation forKey:nil];        [UIView animateWithDuration:0.3f                          delay:0                        options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveEaseIn | UIViewAnimationOptionBeginFromCurrentState                     animations:^{                         [self.backgroundView setAlpha:1.0];                         [self.alertView setAlpha:1.0];                     }                     completion:^(BOOL finished){                         if ([self.delegate respondsToSelector:@selector(alertViewDidShow:)]) {                             [self.delegate alertViewDidShow:self];                         }                     }];}-(void) triggerDropAnimations{    CAKeyframeAnimation * animation;    animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];    animation.duration = 0.4f;    //animation.delegate = self;    animation.removedOnCompletion = NO;    animation.fillMode = kCAFillModeForwards;    NSMutableArray *values = [NSMutableArray array];    [values addObject:[NSValue valueWithCGPoint:CGPointMake(screenBounds.size.width/2, -self.alertView.frame.size.height)]];    [values addObject:[NSValue valueWithCGPoint:CGPointMake(screenBounds.size.width/2, (screenBounds.size.height/2)+self.alertView.frame.size.height*0.05)]];    [values addObject:[NSValue valueWithCGPoint:CGPointMake(screenBounds.size.width/2, (screenBounds.size.height/2))]];    [values addObject:[NSValue valueWithCGPoint:CGPointMake(screenBounds.size.width/2, (screenBounds.size.height/2)-self.alertView.frame.size.height*0.05)]];    [values addObject:[NSValue valueWithCGPoint:CGPointMake(screenBounds.size.width/2, (screenBounds.size.height/2))]];    animation.values = values;    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];    [self.alertView.layer addAnimation:animation forKey:nil];        [UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{            self.backgroundView.alpha = 1.0;    } completion:^(BOOL finished){        if ([self.delegate respondsToSelector:@selector(alertViewDidShow:)]) {            [self.delegate alertViewDidShow:self];        }    }];}#pragma mark - View Setup- (void)_setupViewsWithTitle:(NSString *)title text:(NSString *)aText cancelButton:(BOOL)hasCancelButton{        [self calculateContentSize:aText];        /*setup backgroundView*/    _blurFilter = [[GPUImageiOSBlurFilter alloc] init];    _blurFilter.blurRadiusInPixels = 2.0;    _backgroundView = [[UIImageView alloc]initWithFrame:screenBounds];    UIImage * image = [self _convertViewToImage];    UIImage *blurredSnapshotImage = [_blurFilter imageByFilteringImage:image];    [self.backgroundView setImage:blurredSnapshotImage];    self.backgroundView.alpha = 0.0;    [self addSubview:self.backgroundView];        /*setup alertPopupView*/    self.alertView = [self _alertPopupView];    /*setup title and content view*/    [self _labelSetupWithTitle:title andText:aText];    [self addSubview:self.alertView];     /*setup buttons*/    [self _buttonSetupWithCancelButton:hasCancelButton];}- (void)_labelSetupWithTitle:(NSString*) title andText:(NSString*) text{    _titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 180, AlertViewTitleLabelHeight)];    _titleLabel.center = CGPointMake(CGRectGetWidth(self.alertView.frame)/2, AlertViewTitleLabelHeight/2);    _titleLabel.text = title;    _titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-LightItalic" size:20.0f];    _titleLabel.textAlignment = NSTextAlignmentCenter;    [self.alertView addSubview:_titleLabel];            if (self.contentType == BlurAlertViewContentTypeText) {        _textLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 180, self.contentSize.height)];        _textLabel.center = CGPointMake(self.alertView.frame.size.width/2, CGRectGetHeight(self.alertView.frame)/2);        _textLabel.text = text;        _textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:AlertViewDefaultTextFontSize];        _textLabel.textAlignment = NSTextAlignmentCenter;        _textLabel.lineBreakMode = NSLineBreakByWordWrapping;        _textLabel.numberOfLines = 0;        [self.alertView addSubview:_textLabel];    }else{        //customView type        self.contentView.center = CGPointMake(self.alertView.frame.size.width/2, CGRectGetHeight(self.alertView.frame)/2);        [self.alertView addSubview:self.contentView];    }}- (UIView*)_alertPopupView{    UIView * alertSquare = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, AlertViewTitleLabelHeight+2*AlertViewSpaceHeight+self.contentSize.height+AlertViewTitleLabelHeight)];    alertSquare.backgroundColor = [UIColor colorWithRed:0.937 green:0.937 blue:0.937 alpha:1];    alertSquare.center = CGPointMake(CGRectGetWidth(screenBounds)/2, CGRectGetHeight(screenBounds)/2);        [alertSquare.layer setCornerRadius:4.0];    [alertSquare.layer setShadowColor:[UIColor blackColor].CGColor];    [alertSquare.layer setShadowOpacity:0.4];    [alertSquare.layer setShadowRadius:20.0f];    [alertSquare.layer setShadowOffset:CGSizeMake(0.0, 0.0)];    //add top background layer    CAShapeLayer *topBackgroundLayer = [CAShapeLayer layer];    UIBezierPath *topBackgroundPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0,0, CGRectGetWidth(alertSquare.frame), AlertViewTitleLabelHeight) byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight cornerRadii:CGSizeMake(4.0, 4.0)];    topBackgroundLayer.path = topBackgroundPath.CGPath;    topBackgroundLayer.fillColor = RJTitleLabelBackgroundColor.CGColor;    [alertSquare.layer addSublayer:topBackgroundLayer];        return alertSquare;}- (void)_buttonSetupWithCancelButton:(BOOL) hasCancelButton{    CGFloat buttonCenterY = (CGRectGetHeight(self.alertView.frame)*2-30-AlertViewSpaceHeight)/2;    if (hasCancelButton) {        //ok button        _okButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 84, 30)];        _okButton.center = CGPointMake((CGRectGetWidth(self.alertView.frame)/4)+3, buttonCenterY);                //cancel button        _cancelButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 84, 30)];        _cancelButton.center = CGPointMake((CGRectGetWidth(self.alertView.frame)*3/4)-3, buttonCenterY);        _cancelButton.backgroundColor = [UIColor colorWithRed:0.792 green:0.792 blue:0.792 alpha:1];                [_cancelButton setTitle:@"取消" forState:UIControlStateNormal];        _cancelButton.titleLabel.textColor = [UIColor whiteColor];        _cancelButton.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];[_cancelButton addTarget:self action:@selector(handleButtonTouched:) forControlEvents:UIControlEventTouchUpInside];        [_cancelButton.layer setCornerRadius:3.0f];    }else{        _okButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 180, 30)];        _okButton.center = CGPointMake(CGRectGetWidth(self.alertView.frame)/2, buttonCenterY);    }        [_okButton setBackgroundColor:RJComfirmButtonColor];        //ok button end setup    [_okButton setTitle:@"確定" forState:UIControlStateNormal];    _okButton.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];[_okButton addTarget:self action:@selector(handleButtonTouched:) forControlEvents:UIControlEventTouchUpInside];    [_okButton.layer setCornerRadius:3.0f];        [self.alertView addSubview:_okButton];    if (hasCancelButton){        [self.alertView addSubview:_cancelButton];    }    }- (void)calculateContentSize:(NSString *)text{    UIFont *font = [UIFont fontWithName:@"HelveticaNeue" size:AlertViewDefaultTextFontSize];    CGSize constrainedSize = CGSizeMake(180, CGFLOAT_MAX);        if (IS_IOS7_Or_Later)    {        NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName,nil];        self.contentSize =[text boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:tdic context:nil].size;    }else{#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wdeprecated-declarations"        self.contentSize = [text sizeWithFont:font constrainedToSize:constrainedSize lineBreakMode:NSLineBreakByCharWrapping];#pragma clang diagnostic pop    }        if (self.contentType == BlurAlertViewContentTypeCustomView) {        self.contentSize = self.contentView.bounds.size;    }}-(UIImage *)_convertViewToImage{    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];    CGRect rect = [keyWindow bounds];    UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);    CGContextRef context = UIGraphicsGetCurrentContext();    [keyWindow.layer renderInContext:context];    UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return capturedScreen;}#pragma mark - Button Action- (void)handleButtonTouched:(UIButton *)button{    [self dismiss];        if ([self.delegate respondsToSelector:@selector(alertView:didDismissWithButton:)]) {        [self.delegate alertView:self didDismissWithButton:button];    }        if (self.completionBlock) {        self.completionBlock(self,button);    }}@end



主控制器,使用樣本

////  ViewController.m//  特效彈出框////  Created by beyond on 14-10-18.//  Copyright (c) 2014年 com.beyond All rights reserved.//#import "ViewController.h"// 1匯入#import "BlurAlertView.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // 添加圖片        CGRect rect = CGRectMake(0, 20, 320, 460);    UIImageView *imageView = [[UIImageView alloc]initWithFrame:rect];    imageView.image = [UIImage imageNamed:@"1.png"];    imageView.contentMode = UIViewContentModeScaleAspectFill;    [self.view addSubview:imageView];        // 添加按鈕    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];    btn.frame = CGRectMake(0, 40, 40, 40);    [btn addTarget:self action:@selector(showAlertView) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:btn];    // 添加按鈕2    UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeContactAdd];    btn2.frame = CGRectMake(0, 80, 40, 40);    [btn2 addTarget:self action:@selector(showAlertView2) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:btn2];}#pragma mark - 第3方提醒控制項- (void)showAlertView{    BlurAlertView *alertView = [[BlurAlertView alloc]initWithTitle:@"title" text:@"text" cancelButton:YES];        // 設定CA動畫類型    alertView.animationType = BlurAlertViewAnimationTypeBounce;    // BlurAlertViewAnimationTypeDrop;        [alertView setCompletionBlock:^(BlurAlertView *alert, UIButton *button) {        if (button == alert.okButton) {            NSLog(@"ok button touched!");        }else{            NSLog(@"cancel button touched!");        }    }];    [alertView show];}- (void)showAlertView2{    BlurAlertView *alertView = [[BlurAlertView alloc]initWithTitle:@"title" text:@"text" cancelButton:YES];        // 設定CA動畫類型    // alertView.animationType = BlurAlertViewAnimationTypeBounce;    alertView.animationType = BlurAlertViewAnimationTypeDrop;        [alertView setCompletionBlock:^(BlurAlertView *alert, UIButton *button) {        if (button == alert.okButton) {            NSLog(@"ok button touched!");        }else{            NSLog(@"cancel button touched!");        }    }];    [alertView show];}@end
























大家好,有木有這種iOS開源類庫

招聘網站上 都是碩士 指的就是
 
IOS開發 自已純手工寫源碼,怎接收第3方xib板的Back按鈕?

你的意思是 你移植別人代碼代碼的時候 不把xib移植過來?
就只想把ViewController拿過來,然後自己再用代碼寫介面?
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.