iOS:定制自适应大小的透明吐司弹框
一、简单介绍
创建一个吐司消息的黑色透明弹框,可以根据消息长短自适应大小。
可以手动创建手动显示手动关闭,也可以手动创建自动显示自动关闭。
简单好用。
二、代码使用
.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:定制自适应大小的透明吐司弹框的更多相关文章
- iOS 可高度自定义的底部弹框
技术: iOS Objective-C 概述 一个可以让开发者通过编写 tableView 的内容随心所欲的定制自己想要的底部弹框 详细 代码下载:http://www.demodashi.com ...
- iOS HTML 字符串中的图片 自适应大小
本文原文地址:http://www.cnblogs.com/qianLL/p/6095988.html 有时候 我们接收数据的时候 后台给的数据室一串HTML 的字符串 但是 我们要显示出来 这 ...
- 如何减小ios安装包大小
以前的老文章了,搬到cnblog 更小的安装包意味着更快的下载安装速度,也往往意味着更快的加载运行速度,是优化ios应用的一个重要方面,本文主要参考<减小iOS应用程序的大小>,在实际测试 ...
- ios UIWebView自定义Alert风格的弹框
之前开发过一个App,因为公司之前写好了网页版的内容和安卓版本的App,我进去后老板要求我ios直接用网页的内容,而不需要自己再搭建框架.我一听,偷笑了,这不就是一个UIWebView吗?简单! 但是 ...
- Qt自适应大小显示图片,添加菜单
由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...
- Android项目实战(五):TextView自适应大小
对于设置TextView的字体默认大小对于UI界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成UI的不美观 现在就让我们学习自适应大小的TextView控件,即当文字长度变 ...
- iOS弹框
IOS 弹框 如果直接弹出一个自定义的视图 可以选用第三方: MJPopup 弹出: if(!bandview) { bandview=[[[NSBundle mainBundle]loadNibNa ...
- css控制图片自适应大小
相信大家做网页时经常会碰到大分辨率的图片会把表格涨破以致漂亮的网页面目全非,但只要使用以下的CSS语句即可解决. 该CSS的功能是:大于600的图片自动调整为600显示. <style ...
- Ios 弹框 MJPopup,KxMenu
IOS 弹框 如果直接弹出一个自定义的视图 可以选用第三方: MJPopup 弹出: if(!bandview) { bandview=[[[NSBundle mainBundle]loadNibNa ...
随机推荐
- JMeter非GUI模式下日志介绍
Creating summariser <summary> Created the tree successfully using /opt/JMeter/TestPlan/test.jm ...
- sql对于字符串的处理
- JAXB在Java 9/10并且使用Tomcat 9的问题
Implementation of JAXB-API has not been found on module path or classpath. JAXB API是java EE 的API,jav ...
- 04. Pandas 3| 数值计算与统计、合并连接去重分组透视表文件读取
1.数值计算和统计基础 常用数学.统计方法 数值计算和统计基础 基本参数:axis.skipna df.mean(axis=1,skipna=False) -->> axis=1是按行来 ...
- Badboy录制Jmter脚本
提纲 1.特性和用途 2.下载和安装 3.界面介绍 4.录制脚本(注意:badboy默认是打开就开始录制,需要在step双击后进行取消默认设置) 5.添加断言(参数化设置,注意:badboy默认只运行 ...
- 蓝桥杯 剪邮票(dfs枚举 + bfs)
剪邮票 如图1, 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)比如,图2,图3中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少种不同的 ...
- Harmonic Number(调和级数+欧拉常数)
In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers ...
- 四、Python导入自己写的包报错:没有该包如何解决
场景:当你运行文件时,提示没有你想要导入的这个包,这是只需在你运行文件的开头添加俩行代码: import sys sys.path.apprnd('../') 原理:请看图解 另外解释下sys.pat ...
- Django之ORM操作总结
Django之ORM总结 表结构 from django.db import models # 一对多:班级与学生 # 多对多:班级与老师 # Create your models here. #创建 ...
- 003.MongoDB主要概念
一 对比关系 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行 ...