一、简单介绍

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

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

简单好用。

二、代码使用

.h文件

//
//  LiveHUD.h
//
//  Created by 夏远全 on 2019/4/10.
//  Copyright © 2019年 xiaoshuang. All rights reserved.
//

#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGINstatic 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;@endNS_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/2;self.layer.masksToBounds = YES;
}-(void)setupFrame
{CGFloat LabelWidth = [self.messageLabel sizeThatFits:CGSizeMake(MAXFLOAT, HUDHEIGHT)].width;LabelWidth = MAX(LabelWidth+2*HUDPADDING, HUDMINWIDTH);self.frame = CGRectMake(0, 0, 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(@(0));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/2 animations:^{self.alpha = 1.0;}];
}-(void)showWithDurationAutoHide:(NSTimeInterval)duration{[UIView animateWithDuration:DURATION/2 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/2 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/2 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:16];}return _messageLabel;
}@end

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

转载于:https://www.cnblogs.com/XYQ-208910/p/10709077.html

iOS:定制自适应大小的透明吐司弹框相关推荐

  1. Flutter 吐司弹框的使用 showToast弹框(插件)

    Flutter 简单好用的 showToast 弹框 先贴依赖 版本可根据最新变 页面代码实现 效果 #flutter 中会用到一些fultter 实现起来麻烦的组件,而flutter的插件很多 简单 ...

  2. iOS 定位的时候没有出显弹框选择

    最近遇到个问题,用百度地图定位的时候没有弹出框提示,在info.plist里添加了隐私权限,也一直没有提示,如图显示 这样就会定位不到. 解决方案: 1.添加隐私权限的前提下 <key>N ...

  3. Android Study 之通过DialogFragment玩转高仿IOS弹框~ ^.^

    LZ-Say:在努力向前奔跑的途中,不要忘记让自己始终保持一个良好的状态,一颗初心,一颗永不言弃的心,一起加油` 前言 LZ虽说是搞Android的,但是对IOS的风格样式甚是酷爱,感觉简约大方,而今 ...

  4. ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解

    //第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollVie ...

  5. IOS精品源码,仿探探UIButton封装iOS提示弹框迅速引导页自定义导航栏

    1.仿 探探UI Swift ,重用机制 2.超强UIButton封装 3.一行代码集成UIPickerView,界面完全自定义 4.iOS提示弹框 5.swift UITableView / UIC ...

  6. android 仿ios 底部弹出,项目需求讨论-仿ios底部弹框实现及分析

    hi,在项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们在iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: 屏幕快照 2017-10-09 08.20.30 PM.png 弹框 ...

  7. iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身

    iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新技术,主要为了解决用户下载 A ...

  8. 自定义IOS系统弹框

    写在之前 系统的弹框虽然很好看,但是有时候无法完全满足UI设计的需求,比如说中间要显示一个输入框,或者要放置一张图片,这里介绍一个很早之前的自定义弹框库,这个自定义弹框sdk写的很细致,定制性很强,几 ...

  9. layui弹窗自适应变大_layui怎么调整弹框大小?

    layui怎么调整弹框大小?下面本篇文章给大家介绍一下layui中调整layer弹出窗体大小的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. layer是一个备受青睐的web弹 ...

  10. Android Dialog 弹框之外的区域 默认透明背景色修改

    就是下面弹框之外的颜色值 透明度修改 一般弹框外的区域的不是全透明  都有一个默认的值使用的属性为 setDimAmount 这个默认值是0.5 这个值的范围在 0-1 之间 如果设置为1 就是全黑色 ...

最新文章

  1. 一文总结Datawhale系列分享
  2. iOS6.0 xcode4.5 设置横屏
  3. PCB-电解电容的封装
  4. 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试
  5. c语言自动突破,为你解决c语言源代码【突破方案】
  6. 运动:延伸你的美丽(图)
  7. 蓝桥杯2019年第十届C/C++省赛B组第二题-年号字串
  8. 小程序源码:酒桌扑克娱乐喝酒小游戏-多玩法安装简单
  9. linux patch 给文件打补丁,Linux补丁工具patch生成使用补丁用法示例
  10. tf15: 中文语音识别【转】
  11. Python编程——实现屏幕广告语的滚动
  12. C语言中 1%3,算术什么意思啊 算数什么意思
  13. 餐饮加盟行业怎么找加盟商?线上怎么引流?这几招教你线上低成本获客!
  14. 【金猿产品展】云简业财——满足中大型企业个性化需求的报销、费控、预算、业财一体化管理平台...
  15. NB-IOT开发|nbiot开发教程《三》AT指令类模组驱动-STM32实现AT指令状态机
  16. uniapp修改底部导航栏
  17. UNIX网络编程:卷2-读书笔记
  18. 算法模板:动态规划之线性DP【沈七】
  19. UE4蓝图案例:媒体播放器的开关
  20. 关于spac 'en'错误(主要是服务器一直搞不好的看过来)

热门文章

  1. Spring事务原理分析(二)--@Transactional事务属性的解析
  2. JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
  3. Codeforces348B Apple Tree DFS
  4. Spring Framework 官方文档学习(二)之IoC容器与bean lifecycle
  5. zepto在整个屏幕中左滑动右滑动
  6. 将 Java Spring Framework 应用程序迁移到 Windows Azure
  7. 依赖注入的两种常用方式(构造器和Setter)与注入内容(装配数据)——Spring IOC/DI(三)
  8. 4600显卡linux驱动,下载:NVIDIA显卡Linux驱动304.64版
  9. [JNI] 开发前言
  10. BZOJ2118[国家集训队] 墨墨的等式