iOS 灵活,简易,扩展性强的气泡提示框LFBubbleView(含源码)
一、效果图
二、使用方法
使用简单,4行代码集成。
- _bubbleView = [[LFBubbleView alloc] initWithFrame:CGRectMake(, , , )];
- _bubbleView.lbTitle.text = @"提示文字";
- [self.view addSubview:_bubbleView];
[_bubbleView showInPoint:CGPointMake(_viewTarget.center.x, _viewTarget.center.y - 8)];
更多方法见.h文件,有详细注释,比如设置颜色、边框色、圆角、三角大小、三角位置、按比例设置三角位置、三角方向。还暴露一个容器可让用户自定义气泡中的内容。
- //
- // LFBubbleView.h
- // LFBubbleViewDemo
- //
- // Created by 张林峰 on 16/6/29.
- // Copyright © 2016年 张林峰. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- typedef NS_ENUM(NSInteger, LFTriangleDirection) {
- LFTriangleDirection_Down,
- LFTriangleDirection_Left,
- LFTriangleDirection_Right,
- LFTriangleDirection_Up
- };
- /**样式配置*/
- @interface LFBubbleViewConfig : NSObject <NSCopying>
- @property (nonatomic, strong) UIColor *color;//背景色,默认红色半透明
- @property (nonatomic, strong) UIColor *textColor;//字体颜色,默认白色
- @property (nonatomic, strong) UIFont *font;//字体,默认12
- @property (nonatomic, strong) UIColor *borderColor;//边框色,默认无
- @property (nonatomic, assign) CGFloat borderWidth;//默认无
- @property (nonatomic, assign) CGFloat cornerRadius;//圆角,默认5
- @property (nonatomic, assign) CGFloat triangleH;//三角形高.默认7
- @property (nonatomic, assign) CGFloat triangleW;//三角形底边长默认7
- @property (nonatomic) UIEdgeInsets edgeInsets;//label四周边距,默认(5,5,5,5)
- @end
- /**
- (可选)配置LFBubbleView默认样式的单例,只需应用启动时配置一次即可
- 作用:如果多处使用LFBubbleView,配置默认样式,就不用繁琐的设置那些属性
- */
- @interface LFBubbleViewDefaultConfig : NSObject
- @property (nonatomic, strong) LFBubbleViewConfig *config;//有默认值
- + (instancetype)sharedInstance;
- @end
- /**
- 气泡提示框
- */
- @interface LFBubbleView : UIView
- @property (nonatomic, strong) LFBubbleViewConfig *config;//设置样式bubble.config = config或bubble.config.xx = xx。有默认值
- @property (nonatomic, strong) UIView *contentView;//容器,可放自定义视图,默认装文字
- @property (nonatomic, strong) UILabel *lbTitle;//提示文字
- @property (nonatomic) LFTriangleDirection direction;//三角方向,默认朝下
- @property (nonatomic, assign) CGFloat dismissAfterSecond;//hideAfterSecond秒后自动消失,不设置或0则不自动消失
- @property (nonatomic, strong) NSString *showOnceKey;//如果设置了Key,该气泡只显示一次(比如某个新功能只需要提示用户一次)
- //优先使用triangleXY。如果triangleXY和triangleXYScale都不设置,则三角在中间
- @property (nonatomic, assign) CGFloat triangleXY;//三角中心的x或y(三角朝上下代表x,三角朝左右代表y)
- @property (nonatomic, assign) CGFloat triangleXYScale;//三角的中心x或y位置占边长的比例,如0.5代表在中间
- /**
- * 显示
- *
- * @param point 三角顶端位置
- */
- - (void)showInPoint:(CGPoint)point;
- /**来回平移动画*/
- - (void)doTranslationAnimate;
- /**弹跳动画*/
- - (void)doSpringAnimate;
- @end
这只是LFKit的一个子库,LFKit地址https://github.com/zhanglinfeng/LFKit
只需LFBubbleView的 pod 'LFKit/Component/LFBubbleView'
需要LFKit中所有自定义控件的pod 'LFKit/Component'
需要总库的 pod 'LFKit'
iOS 灵活,简易,扩展性强的气泡提示框LFBubbleView(含源码)的更多相关文章
- Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
本文主要介绍一个支持图片自动预取.支持多种缓存算法的图片缓存的使用及功能.图片较大需要SD卡保存情况推荐使用ImageSDCardCache. 与Android LruCache相比主要特性:(1). ...
- 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的 ...
- 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
本文转自:http://www.trinea.cn/android/preloaddatacache/ 本文主要介绍一个支持自动向前或向后获取新数据的缓存的使用及功能.Android图片内存缓存可见I ...
- Arc Engine 中添加气泡提示框
一.在ArcMap中的定位操作 已知若干点的经纬度坐标,要求在地图中进行定位: 1.通过Tool >Add X Y data 定位点,注意选择地理坐标系下的wgs 1984坐标系: 2.定位后的 ...
- Ocelot简易教程(七)之配置文件数据库存储插件源码解析
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9852711.html 上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储 ...
- Qt显示Linux desktop natification气泡提示框
在现代Linux桌面环境上我们时常可以看到类似的消息框: 这些消息框常用在如下场景: 即时聊天软件的新消息 闹钟定时提示 电池电量提示 邮件消息 长耗时操作的完成提示 在freedesktop.org ...
- iOS bug 之 H5 页面没有弹出提示框
描述:在安卓上有提示框,但是在iOS上没有提示框. step 1: 失误,是我没有在正确的位置设置网址. step 2: 修改之后,测试页能弹出提示框,但是正式的页面没有提示框. step 3: 我输 ...
- arcgis api 3.x for js 地图加载多个气泡窗口展示(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- iOS头条新闻App、自动布局、省市区联动、登录按钮动画、Alert弹框效果等源码
iOS精选源码 LEEAlert -- 优雅的Alert ActionSheet 登录按钮 省市区三级联动 JHViewCorner - 一行代码搞定圆角 JHFrameLayout - 一行代码实现 ...
随机推荐
- es6快速排序
let qsort = fn =>([x,...xn]) => x == null ? [] : [ ...qsort(fn)(xn.filter(a=>fn(a,x))), x, ...
- Fragment里使用 PhoneGap 的 CordovaWebView
首先说明一下为什么要使用 CordovaWebView 而不直接使用 WebView 呢?由于 Android4.4 版本之后对 WebView 做了很大的改变,具体参考 这篇文章:理解WebKit和 ...
- 【BZOJ1146】【CTSC2008】网络管理 [整体二分]
网络管理 Time Limit: 50 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description M公司是一个非常庞大的跨国公司,在 ...
- 【BZOJ】1596: [Usaco2008 Jan]电话网络
[算法]树上贪心 [题解] 因为一个点必须被覆盖,那么它如果没有被子树节点覆盖的话,就覆盖它的父节点. 从叶子开始贪心. 注意,如果它自己已经被选了就不需要选父节点了. #include<cst ...
- 列出top中的pid
#!/usr/bin/env python import os import string #方法1:通过字符串的isdigits来判断 #filelist = os.listdir('/proc') ...
- 进一步认识golang中的并发
如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟.需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发. 并发的意 ...
- 【反演复习计划】【bzoj3529】数表
Orz PoPoQQQ大爷 按照他ppt的解法,这题可以划归到之前的题了OrzOrz 跪wy写的题解(Stealth Assassin)https://www.luogu.org/wiki/show? ...
- 手机端iscoll插件的使用方法
除了以前版本的iScroll的特性以外,iScroll 4还包括如下的特性: (1)缩放(Pinch/Zoom) (2)拉动刷新(Pull up/down to refresh) (3)速度和性能提升 ...
- sql 获取字符串首字母,循环
//字符串首字母 CREATE FUNCTION GetInitialLetter(@ChineseString NVARCHAR()) RETURNS NVARCHAR() AS BEGIN DEC ...
- docker官方文档中的dns,link,expose,publish
link是过时的了,尽量不要用. dns内部集成,也可以用外部. expose只是用于记录,并不真的. publish是否起作用,也要看情况,是否被占用端口. -------------------- ...