一、简单介绍

创建一个吐司消息的黑色透明弹框,可以根据消息长短自适应大小。

可以手动创建手动显示手动关闭,也可以手动创建自动显示自动关闭。

简单好用。

二、代码使用

.h文件

//
// LiveHUD.h
//
// Created by 夏远全 on 2019/4/10.
// Copyright © 2019年 xiaoshuang. All rights reserved.
// #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN static CGFloat const HUDHEIGHT = 44.0;
static CGFloat const HUDMINWIDTH = 230.0;
static CGFloat const HUDPADDING = 47.0;
static NSTimeInterval const DURATION = 1.0; @interface LiveHUD : UIView
@property (nonatomic, assign) CGFloat bgAlpha; //背景透明度
@property (nonatomic, strong) UILabel *messageLabel;//消息label //直接显示(默认1.0秒后会自动隐藏)
+(void)showLiveHUDWithMessage:(NSString *)message inView:(UIView *)containerView;
+(void)showLiveHUDWithMessage:(NSString *)message messageFont:(UIFont *)messageFont messageColor:(UIColor *)messageColor inView:(UIView *)containerView; //只是创建
+(instancetype)createLiveHUDWithMessage:(NSString *)message inView:(UIView *)containerView;
+(instancetype)createLiveHUDWithMessage:(NSString *)message messageFont:(UIFont *)messageFont messageColor:(UIColor *)messageColor inView:(UIView *)containerView; //手动显示
-(void)showWithNeedHandHide;
-(void)showWithDurationAutoHide:(NSTimeInterval)duration; //手动隐藏
-(void)hide;
-(void)hideWithDuration:(NSTimeInterval)duration; //更新文案
-(void)updateMessage:(NSString *)message; @end NS_ASSUME_NONNULL_END

.m文件

//
// LiveHUD.m
//
// Created by 夏远全 on 2019/4/10.
// Copyright © 2019年 xiaoshuang. All rights reserved.
// #import "LiveHUD.h" @interface LiveHUD ()
@property (nonatomic, strong) UIView *containerView;
@end @implementation LiveHUD #pragma mark - life cycle
+(instancetype)createLiveHUDWithMessage:(NSString *)message inView:(UIView *)containerView
{
LiveHUD *hud = [[self alloc] init];
hud.messageLabel.text = message;
hud.containerView = containerView;
[hud setup];
return hud;
} +(instancetype)createLiveHUDWithMessage:(NSString *)message messageFont:(UIFont *)messageFont messageColor:(UIColor *)messageColor inView:(UIView *)containerView
{
LiveHUD *hud = [[self alloc] init];
hud.messageLabel.text = message;
hud.messageLabel.font = messageFont;
hud.messageLabel.textColor = messageColor;
hud.containerView = containerView;
[hud setup];
return hud;
} +(void)showLiveHUDWithMessage:(NSString *)message inView:(UIView *)containerView
{
LiveHUD *hud = [[self alloc] init];
hud.messageLabel.text = message;
hud.containerView = containerView;
[hud setup];
[hud show];
} +(void)showLiveHUDWithMessage:(NSString *)message messageFont:(UIFont *)messageFont messageColor:(UIColor *)messageColor inView:(UIView *)containerView
{
LiveHUD *hud = [[self alloc] init];
hud.messageLabel.text = message;
hud.messageLabel.font = messageFont;
hud.messageLabel.textColor = messageColor;
hud.containerView = containerView;
[hud setup];
[hud show];
} -(void)setup
{
[self setDefalut];
[self setupFrame];
[self addSubViews];
[self setupSubviewsConstraints];
} -(void)setDefalut
{
self.alpha = 0.0;
self.backgroundColor = [HEXCOLOR(0X000000) colorWithAlphaComponent:0.7];
self.layer.cornerRadius = HUDHEIGHT/;
self.layer.masksToBounds = YES;
} -(void)setupFrame
{
CGFloat LabelWidth = [self.messageLabel sizeThatFits:CGSizeMake(MAXFLOAT, HUDHEIGHT)].width;
LabelWidth = MAX(LabelWidth+*HUDPADDING, HUDMINWIDTH);
self.frame = CGRectMake(, , LabelWidth, HUDHEIGHT);
self.center = self.containerView.center;
} #pragma mark - add subViews
-(void)addSubViews
{
[self addSubview:self.messageLabel];
[self.containerView addSubview:self];
} #pragma mark - layout subviews
-(void)setupSubviewsConstraints
{
[self.messageLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(@());
make.height.equalTo(@(HUDHEIGHT));
}];
} #pragma mark - event response #pragma mark - public methods
-(void)setBgAlpha:(CGFloat)bgAlpha{
_bgAlpha = bgAlpha;
self.backgroundColor = [HEXCOLOR(0X000000) colorWithAlphaComponent:bgAlpha];
} -(void)showWithNeedHandHide{ [UIView animateWithDuration:DURATION/ animations:^{
self.alpha = 1.0;
}];
} -(void)showWithDurationAutoHide:(NSTimeInterval)duration{ [UIView animateWithDuration:DURATION/ animations:^{
self.alpha = 1.0;
} completion:^(BOOL finished) {
[self hideWithDuration:duration];
}];
} -(void)hide{
[self hideWithDuration:0.0];
} -(void)hideWithDuration:(NSTimeInterval)duration{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [UIView animateWithDuration:DURATION/ animations:^{
self.alpha = 0.0;
} completion:^(BOOL finished) {
[self removeFromSuperview];
}]; });
} -(void)updateMessage:(NSString *)message
{
self.messageLabel.text = message;
[self setupFrame];
} #pragma mark - private methods
-(void)show{ [UIView animateWithDuration:DURATION/ animations:^{
self.alpha = 1.0;
} completion:^(BOOL finished) {
[self hideWithDuration:DURATION];
}];
} #pragma mark - setters #pragma mark - getters
-(UILabel *)messageLabel{
if (!_messageLabel) {
_messageLabel = [[UILabel alloc] init];
_messageLabel.textAlignment = NSTextAlignmentCenter;
_messageLabel.textColor = HEXCOLOR(0XFFFFFF);
_messageLabel.font = [UIFont systemFontOfSize:];
}
return _messageLabel;
} @end

三、参看效果 (触发事件)

iOS:定制自适应大小的透明吐司弹框的更多相关文章

  1. iOS 可高度自定义的底部弹框

    技术: iOS Objective-C   概述 一个可以让开发者通过编写 tableView 的内容随心所欲的定制自己想要的底部弹框 详细 代码下载:http://www.demodashi.com ...

  2. iOS HTML 字符串中的图片 自适应大小

    本文原文地址:http://www.cnblogs.com/qianLL/p/6095988.html 有时候 我们接收数据的时候  后台给的数据室一串HTML 的字符串  但是 我们要显示出来  这 ...

  3. 如何减小ios安装包大小

    以前的老文章了,搬到cnblog 更小的安装包意味着更快的下载安装速度,也往往意味着更快的加载运行速度,是优化ios应用的一个重要方面,本文主要参考<减小iOS应用程序的大小>,在实际测试 ...

  4. ios UIWebView自定义Alert风格的弹框

    之前开发过一个App,因为公司之前写好了网页版的内容和安卓版本的App,我进去后老板要求我ios直接用网页的内容,而不需要自己再搭建框架.我一听,偷笑了,这不就是一个UIWebView吗?简单! 但是 ...

  5. Qt自适应大小显示图片,添加菜单

    由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...

  6. Android项目实战(五):TextView自适应大小

    对于设置TextView的字体默认大小对于UI界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成UI的不美观 现在就让我们学习自适应大小的TextView控件,即当文字长度变 ...

  7. iOS弹框

    IOS 弹框 如果直接弹出一个自定义的视图 可以选用第三方: MJPopup 弹出: if(!bandview) { bandview=[[[NSBundle mainBundle]loadNibNa ...

  8. css控制图片自适应大小

    相信大家做网页时经常会碰到大分辨率的图片会把表格涨破以致漂亮的网页面目全非,但只要使用以下的CSS语句即可解决.      该CSS的功能是:大于600的图片自动调整为600显示. <style ...

  9. Ios 弹框 MJPopup,KxMenu

    IOS 弹框 如果直接弹出一个自定义的视图 可以选用第三方: MJPopup 弹出: if(!bandview) { bandview=[[[NSBundle mainBundle]loadNibNa ...

随机推荐

  1. JavaScript 组数去重demo

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 扩展中国剩余定理 (exCRT) 的证明与练习

    原文链接https://www.cnblogs.com/zhouzhendong/p/exCRT.html 扩展中国剩余定理 (exCRT) 的证明与练习 问题模型 给定同余方程组 $$\begin{ ...

  3. POJ3740 Easy Finding 舞蹈链 DLX

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目 精确覆盖问题模板题 算法 DLX算法 学习DLX算法--传送门 代码 #include <cstring> ...

  4. PAT (Basic Level) Practise - 写出这个数

    题目链接:https://www.patest.cn/contests/pat-b-practise/1002 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试 ...

  5. HDU-1009的解题报告

    Hdu-1009 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009 题意:Fatmouse准备M磅的猫食,准备与猫守卫仓库有他最爱吃的食品贸易,J ...

  6. Service工作原理

    --摘自<android插件化开发指南> 一.在新进程启动Service 第一步:APP向AMS发送一个启动Service的消息 通过AMN/AMP把要启动的Service信息发送给AMS ...

  7. HDU 3342 Legal or Not (图是否有环)【拓扑排序】

    <题目链接> 题目大意: 给你 0~n-1 这n个点,然后给出m个关系 ,u,v代表u->v的单向边,问你这m个关系中是否产生冲突. 解题分析: 不难发现,题目就是叫我们判断图中是否 ...

  8. poj 3067 Japan 【树状数组】

    <题目链接> 题目大意: 有两个点集,这两个点集从上至下分别从1~n,1~m编号,现在给出n组数据,(x,y),表示左边点集编号为x的点与右边点集编号为y的点相连,现在要求计算这些线段的交 ...

  9. 高效使用hibernate-validator校验框架

    一.前言 高效.合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑.接下来会介绍一下常用一些使用方式. 二.常用注解说明 限制 说明 @Null 限 ...

  10. RFC2616-HTTP1.1-Status Code(状态码规定部分—译文)

    part of Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Fielding, et al. 10 状态码规定(Status Code Defin ...