iOS开发系列之常用自定义控件开发集—Android的Toast控件开发

来源:互联网 发布:淘宝显示在线人数插件 编辑:程序博客网 时间:2024/05/16 13:40

这篇文章演示编写android系统toast控件,toast控件实用于项目中用来提示简单文字信息,实现代码如下:

头文件内容:

////  UIView+WHC_Toast.h//  UIView+WHC_Toast////  Created by 吴海超 on 15/3/24.//  Copyright (c) 2015年 吴海超. All rights reserved.//#import <UIKit/UIKit.h>typedef enum{    TOP,                 //上部    MIDDLE,              //中间    BOTTOM               //下部}WHC_TOAST_POSTION;      //toast  显示的位子typedef enum {    WHITE_FONT,         //黑背景白字    BLACK_FONT,         //白背景黑字}WHC_TOAST_TYPE;        //toast 类型@interface UIView (WHC_Toast)- (void)toast:(NSString *)msg;- (void)toast:(NSString *)msg postion:(WHC_TOAST_POSTION)postion;- (void)toast:(NSString *)msg type:(WHC_TOAST_TYPE)type;- (void)toast:(NSString *)msg postion:(WHC_TOAST_POSTION)postion type:(WHC_TOAST_TYPE)type;- (void)toast:(NSString *)msg during:(NSTimeInterval)during;- (void)toast:(NSString *)msg during:(NSTimeInterval)during postion:(WHC_TOAST_POSTION)postion;- (void)toast:(NSString *)msg during:(NSTimeInterval)during postion:(WHC_TOAST_POSTION)postion type:(WHC_TOAST_TYPE)type;@end源文件实现:////  UIView+WHC_Toast.m//  UIView+WHC_Toast////  Created by 吴海超 on 15/3/24.//  Copyright (c) 2015年 吴海超. All rights reserved.//#import "UIView+WHC_Toast.h"#define  KWHC_FONT_SIZE (14.0)     //默认字体大小#define  KWHC_ANIMATION_TIME (0.5) //显示时动画时间#define  KWHC_DURING (2.0)         //显示周期@implementation UIView (WHC_Toast)//视差效果,toast远近效果- (CATransform3D)loadTransform3D:(CGFloat)z{    CATransform3D scale = CATransform3DIdentity;    scale.m34 = -1.0 / 1000.0;    CATransform3D transform = CATransform3DMakeTranslation(0.0,0.0, z);    return CATransform3DConcat(transform,scale);}/* 显示位子默认下部, 显示时间默认2s 显示类型默认白色黑字 */- (void)toast:(NSString *)msg{    [self toast:msg during:KWHC_DURING];}/* 显示位子自定义 显示时间默认2s 显示类型默认白色黑字 */- (void)toast:(NSString *)msg postion:(WHC_TOAST_POSTION)postion{    [self toast:msg during:KWHC_DURING postion:postion];}/* 显示位子自定义 显示时间默认2s 显示类型默认白色黑字 */- (void)toast:(NSString *)msg type:(WHC_TOAST_TYPE)type{    [self toast:msg during:KWHC_DURING postion:BOTTOM type:type];}/* 显示位子自定义 显示时间自定义 显示类型自定义 */- (void)toast:(NSString *)msg postion:(WHC_TOAST_POSTION)postion type:(WHC_TOAST_TYPE)type{    [self toast:msg during:KWHC_DURING postion:postion type:type];}/* 显示位子自定义 显示时间自定义 显示类型自定义 */- (void)toast:(NSString *)msg during:(NSTimeInterval)during{    [self toast:msg during:KWHC_DURING postion:BOTTOM];}- (void)toast:(NSString *)msg during:(NSTimeInterval)during postion:(WHC_TOAST_POSTION)postion{    [selftoast:msg during:KWHC_DURINGpostion:postion type:WHITE_FONT];}- (void)toast:(NSString *)msg during:(NSTimeInterval)during postion:(WHC_TOAST_POSTION)postion type:(WHC_TOAST_TYPE)type{    [selfcreateContentLabWithMessage:msg during:duringpostion:postion type:type];}/* 创建主控件 */- (UILabel*)createContentLabWithMessage:(NSString*)msg during:(NSTimeInterval)during postion:(WHC_TOAST_POSTION)postion type:(WHC_TOAST_TYPE)type{    self.userInteractionEnabled =NO;    //禁用主view的触摸交互    CGSize      screenSize = [UIScreenmainScreen].bounds.size;    CGFloat     contentLabY = 0.0;    UIColor   * fontColor = nil;    UIColor   * backColor = nil;    switch (postion) {        case TOP:            contentLabY = 100.0;   //默认顶部位子100个像素            break;        case MIDDLE:            contentLabY = screenSize.height /2.0;            break;        case BOTTOM:            contentLabY = screenSize.height -100.0;    //默认离底部100个像素        break;        default:            break;    }    switch (type) {        case WHITE_FONT:            fontColor = [UIColor whiteColor];            backColor = [UIColor blackColor];            break;        case BLACK_FONT:            fontColor = [UIColor blackColor];            backColor = [UIColor colorWithRed:240 /255.0 green:240 / 255.0 blue:240 / 255.0 alpha:1.0];        default:            break;    }    CGFloat     pading = 10.0;    // 兼容低版本#pragma clang diagnostic push#pragma clang diagnostic ignored"-Wdeprecated-declarations"    CGSize      msgSize = [msg sizeWithFont:[UIFont systemFontOfSize:KWHC_FONT_SIZE]                          constrainedToSize:CGSizeMake(MAXFLOAT, 0)];#pragma clang diagnostic pop    CGFloat     contentLabWidth = msgSize.width + pading * 2.0;    NSInteger   multiple = (NSInteger)(msgSize.width / (screenSize.width - pading *2.0)) + 1;    if(multiple > 1){        contentLabWidth = screenSize.width - pading * 2.0;    }    UILabel * contentLab = [[UILabel alloc]initWithFrame:CGRectMake((screenSize.width - contentLabWidth) /2.0,contentLabY,contentLabWidth,multiple * msgSize.height + pading)];    contentLab.numberOfLines = 0;    contentLab.backgroundColor = backColor;    contentLab.textColor = fontColor;    contentLab.font = [UIFont systemFontOfSize:KWHC_FONT_SIZE];    contentLab.textAlignment = NSTextAlignmentCenter;    contentLab.center = CGPointMake(screenSize.width / 2.0, contentLabY);    contentLab.text = msg;    contentLab.layer.cornerRadius = 8.0;    contentLab.layer.masksToBounds = YES;    contentLab.layer.transform = [self loadTransform3D:-10000.0];    [self addSubview:contentLab];    [UIView animateWithDuration:KWHC_ANIMATION_TIME animations:^{        self.layer.opacity = 0.5;        contentLab.layer.transform = [self loadTransform3D:0.0];    }completion:^(BOOL finished) {        [self performSelector:@selector(clearContentLab:) withObject:contentLab afterDelay:during];    }];    return contentLab;}- (void)clearContentLab:(UILabel *)contentLab{    [UIView animateWithDuration:KWHC_ANIMATION_TIME animations:^{        contentLab.layer.transform = [self loadTransform3D:-10000.0];        self.layer.opacity = 1.0;    } completion:^(BOOL finished) {        [contentLab removeFromSuperview];        self.userInteractionEnabled = YES;    //恢复主view的用户交互控制    }];}@end

这里写图片描述
WHC_ToastDemo下载

0 0
原创粉丝点击