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 ...
随机推荐
- linux实现自动检测进程是否存活的脚本
可以在性能测试过程中.定期检测startAgent和nmon的状态 #!/bin/sh while true do pnmon=`ps aux | grep nmon | grep -v grep`; ...
- JMeter学习笔记2-图形界面简单介绍
废话少说直接干活的给: 一.打开和运行JMeter,出现UI界面.如图下所示: 工具栏:常见操作的图标集合,有New(新建), Template(模板) ,Save(保存),Start(开始) ,St ...
- Python交互图表可视化Bokeh:7. 工具栏
ToolBar工具栏设置 ① 位置设置② 移动.放大缩小.存储.刷新③ 选择④ 提示框.十字线 1. 位置设置 import numpy as np import pandas as pd impor ...
- JavaSE| 数组
1.数组(array) 数组就是多个相同类型数据的组合,实现对这些数据的统一管理. 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型.数组属引用类型,数组型数据是对象(object),每 ...
- 007 使用SpringMVC开发restful API五--异常处理
一:任务 1.任务 Spring Boot中默认的错误机制处理机制 自定义异常处理 二:Spring Boot中的默认错误处理机制 1.目前 浏览器访问的时候, restful 接口主要是根据状态码进 ...
- linux文件打包并发送到其他服务器
scp /data/backup/mongodump/mongodb.$DATE.tar root@192.168.1.70:/home/iscsi/mongodb/
- win10安装Oracle11g,出现INS-13001环境不满足最低要求问题
今天安装Oracle11g,出现INS-13001环境不满足最低要求问题: 解决方法 在安装时点击setup.exe之后,出现了:[INS-13001]环境不满足最低要求 这时,打开你的解压后的dat ...
- JS变量声明方式
在JavaScript中有三种声明变量的方式:const var let const:用于声明常量.注意:定义的变量的时候,必须同时初始化,且其值之后不可以修改. var:最常用的声明变量关键字. ...
- Django 学习第六天——Django模型基础第一节
一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...
- C#如何使用REST接口读写数据
原网站:http://www.codeproject.com/Tips/497123/How-to-make-REST-requests-with-Csharp 一个类,我们拷贝下来直接调用就行: 以 ...