iOS:定制自适应大小的透明吐司弹框
一、简单介绍
创建一个吐司消息的黑色透明弹框,可以根据消息长短自适应大小。
可以手动创建手动显示手动关闭,也可以手动创建自动显示自动关闭。
简单好用。
二、代码使用
.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:定制自适应大小的透明吐司弹框相关推荐
- Flutter 吐司弹框的使用 showToast弹框(插件)
Flutter 简单好用的 showToast 弹框 先贴依赖 版本可根据最新变 页面代码实现 效果 #flutter 中会用到一些fultter 实现起来麻烦的组件,而flutter的插件很多 简单 ...
- iOS 定位的时候没有出显弹框选择
最近遇到个问题,用百度地图定位的时候没有弹出框提示,在info.plist里添加了隐私权限,也一直没有提示,如图显示 这样就会定位不到. 解决方案: 1.添加隐私权限的前提下 <key>N ...
- Android Study 之通过DialogFragment玩转高仿IOS弹框~ ^.^
LZ-Say:在努力向前奔跑的途中,不要忘记让自己始终保持一个良好的状态,一颗初心,一颗永不言弃的心,一起加油` 前言 LZ虽说是搞Android的,但是对IOS的风格样式甚是酷爱,感觉简约大方,而今 ...
- ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解
//第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollVie ...
- IOS精品源码,仿探探UIButton封装iOS提示弹框迅速引导页自定义导航栏
1.仿 探探UI Swift ,重用机制 2.超强UIButton封装 3.一行代码集成UIPickerView,界面完全自定义 4.iOS提示弹框 5.swift UITableView / UIC ...
- android 仿ios 底部弹出,项目需求讨论-仿ios底部弹框实现及分析
hi,在项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们在iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: 屏幕快照 2017-10-09 08.20.30 PM.png 弹框 ...
- iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身
iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新技术,主要为了解决用户下载 A ...
- 自定义IOS系统弹框
写在之前 系统的弹框虽然很好看,但是有时候无法完全满足UI设计的需求,比如说中间要显示一个输入框,或者要放置一张图片,这里介绍一个很早之前的自定义弹框库,这个自定义弹框sdk写的很细致,定制性很强,几 ...
- layui弹窗自适应变大_layui怎么调整弹框大小?
layui怎么调整弹框大小?下面本篇文章给大家介绍一下layui中调整layer弹出窗体大小的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. layer是一个备受青睐的web弹 ...
- Android Dialog 弹框之外的区域 默认透明背景色修改
就是下面弹框之外的颜色值 透明度修改 一般弹框外的区域的不是全透明 都有一个默认的值使用的属性为 setDimAmount 这个默认值是0.5 这个值的范围在 0-1 之间 如果设置为1 就是全黑色 ...
最新文章
- 一文总结Datawhale系列分享
- iOS6.0 xcode4.5 设置横屏
- PCB-电解电容的封装
- 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试
- c语言自动突破,为你解决c语言源代码【突破方案】
- 运动:延伸你的美丽(图)
- 蓝桥杯2019年第十届C/C++省赛B组第二题-年号字串
- 小程序源码:酒桌扑克娱乐喝酒小游戏-多玩法安装简单
- linux patch 给文件打补丁,Linux补丁工具patch生成使用补丁用法示例
- tf15: 中文语音识别【转】
- Python编程——实现屏幕广告语的滚动
- C语言中 1%3,算术什么意思啊 算数什么意思
- 餐饮加盟行业怎么找加盟商?线上怎么引流?这几招教你线上低成本获客!
- 【金猿产品展】云简业财——满足中大型企业个性化需求的报销、费控、预算、业财一体化管理平台...
- NB-IOT开发|nbiot开发教程《三》AT指令类模组驱动-STM32实现AT指令状态机
- uniapp修改底部导航栏
- UNIX网络编程:卷2-读书笔记
- 算法模板:动态规划之线性DP【沈七】
- UE4蓝图案例:媒体播放器的开关
- 关于spac 'en'错误(主要是服务器一直搞不好的看过来)
热门文章
- Spring事务原理分析(二)--@Transactional事务属性的解析
- JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
- Codeforces348B Apple Tree DFS
- Spring Framework 官方文档学习(二)之IoC容器与bean lifecycle
- zepto在整个屏幕中左滑动右滑动
- 将 Java Spring Framework 应用程序迁移到 Windows Azure
- 依赖注入的两种常用方式(构造器和Setter)与注入内容(装配数据)——Spring IOC/DI(三)
- 4600显卡linux驱动,下载:NVIDIA显卡Linux驱动304.64版
- [JNI] 开发前言
- BZOJ2118[国家集训队] 墨墨的等式