时间:2021-05-20
先来看看我们见过的一些圆角箭头矩形的提示框效果图
一、了解CGContextRef
首先需要对 CGContextRef 了解, 作者有机会再进行下详细讲解, 这篇中简单介绍下, 方便后文阅读理解. 先了解 CGContextRef 坐标系
坐标系
举例说明 : 对于 商城类App 有很多原价, 现价对比 .那 原件的横线怎么画, 就可以用CGContextRef
说明 : 从上面例子可以看到 是由两点确定一条直线.
二、自定义UILabel
进入正文. 控件可以自定义 UIView . 作者为了简单直接 自定义UILabel.
CustomLabel *customLabel = [[CustomLabel alloc] initWithFrame:CGRectMake(0, 200, 400, 500)];[self.view addSubview:view]; view.backgroundColor = [UIColor orangeColor];首先 .h文件
.h文件没什么说的, 定义的 字符串一会再解释说明
.m文件
我们用 - (void)drawRect:(CGRect)rect; 绘制 圆角箭头
三、简单封装
看到上面 你可以画出 圆角箭头矩形
还记得 .h 中 定义的属性 fillColorStr, 可以进行调用, 随意更改填充颜色, 圆弧角度等.
仅简单封装下 (读者自行严谨封装)
- (void)drawRect:(CGRect)rect { // 默认圆角角度 float r = 4; // 居中偏移量(箭头高度) float offset = 5; // 设置 箭头位置 float positionNum = 20; // 定义坐标点 移动量 float changeNum = r + offset; // 设置画线 长 宽 float w = self.frame.size.width ; float h = self.frame.size.height; // 获取文本 CGContextRef context = UIGraphicsGetCurrentContext(); // 设置 边线宽度 CGContextSetLineWidth(context, 0.2); //边框颜色 CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor); //矩形填充颜色 if ([self.fillColorStr isEqualToString:@"fillColorChange"]) { CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor); }else{ CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); } CGContextMoveToPoint(context, r, offset); // 开始坐标左边开始 CGContextAddArcToPoint(context, w, offset, w, changeNum, r); // 右上角角度 CGContextAddArcToPoint(context, w , h - offset, w - changeNum, h - offset, r); // 右下角角度 CGContextAddLineToPoint(context, positionNum + 10, h - offset); // 向左划线 CGContextAddLineToPoint(context, positionNum + 5, h); // 向下斜线 CGContextAddLineToPoint(context, positionNum, h - offset); // 向上斜线 CGContextAddArcToPoint(context, 0, h - offset, 0, h - changeNum, r); // 左下角角度 CGContextAddArcToPoint(context, 0, offset, r, offset, r); // 左上角角度 CGContextDrawPath(context, kCGPathFillStroke); //根据坐标绘制路径 /** 父类调用 放在画完边线 后. 不然 设置的文字会被覆盖 */ [super drawRect:rect];}// 当 要改变填充颜色 可以进行调用改变-(void)setFillColorStr:(NSString *)fillColorStr{ _fillColorStr = fillColorStr; // 调用- (void)drawRect:(CGRect)rect; 重绘填充颜色 [self setNeedsDisplay]; }将控件颜色 设置为透明, 一个 自定义的提示框完成. 作者仅提供一种方法, 读者也可用 UIBezierPath等 去实现.
四、补充说明
有人说 直接用图片实现, 都可以 , 看工程需求. 此文主要聊的是
用 - (void)drawRect:(CGRect)rect; 绘制 圆角箭头
介绍CGContextAddArcToPoint的使用
对用图片实现 , 形变问题.
UIImage 类提供
(UIImage*)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight;简单说明下
图片为 100 * 56 像素
UIImage *tempImage = [UIImage imageNamed:@"tip.png"];/** 说明 : 创建一个内容可拉伸,边角不拉伸的图片, 单位为像素 * LeftCapWidth: 左边不拉伸区域的宽度 * topCapHeight: 上面不拉伸区域高度 * 之后沿此区域 横纵拉伸, 边角不变 */ tempImage = [tempImage stretchableImageWithLeftCapWidth:80 topCapHeight:20]; UIImageView *imgView=[[UIImageView alloc]initWithImage:tempImage]; imgView.frame = CGRectMake(100, 100, 200, 56); [self. view addSubview:imgView];拉伸后与原图对比
总结
以上就是这篇文章的全部内容了,希望本文的内容对各位iOS开发者们能有所帮助,如果有疑问大家可以留言交流。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一款基于纯CSS的气泡提示框,整个提示框由箭头和矩形框组成,并且气泡提示框的箭头可以有不同的方向。在线预览源码下载实现的代码。css代码:CSSCode复制内容
摘要:之前给大家介绍过用CSS来实现带箭头的提示框,今天我们来点不太一样的,本文将分享几款带箭头提示框。qtipqTip是一种先进的提示插件,基于jQuery框
无论是提示框还是导航栏都能看到如上图所示的带有箭头的框框,这种箭头可以通过背景图片或者是css来实现,本文介绍三种通过css实现带箭头的提示框。1.通过bord
NO.1前言Tooltips常被称为提示框(或信息提示框),提示框能够以较强的交互性、自由度为用户提供相应的提示信息。今天我们要聊的不是如何实现强大的交互行为,
本文实例为大家分享了anadroid实现弹出提示框的具体代码,供大家参考,具体内容如下提示框是利用AlertDialog实现的。代码:(设置在button的点击