当前位置: 首页 > news >正文

供应链网站制作百度网

供应链网站制作,百度网,河南建设工程信息网官网洛阳至信阳省道,做淘宝站外推广网站把我之前发布在简书的博客搬运过来。 目录 场景思路具体实现1. 自定义一个继承自UILabel的IrregularLabel2. 在初始化方法中进行相应初始化和设置3. 在layoutSubviews方法中进行路径的设置 最终效果箭头 label 场景 最近 App 改版,以下是截取的部分 UI 设计图&…

请添加图片描述

把我之前发布在简书的博客搬运过来。


目录

  • 场景
  • 思路
  • 具体实现
    • 1. 自定义一个继承自UILabel的IrregularLabel
    • 2. 在初始化方法中进行相应初始化和设置
    • 3. 在layoutSubviews方法中进行路径的设置
  • 最终效果
  • 箭头 label


场景

最近 App 改版,以下是截取的部分 UI 设计图:

其中有一个不规则的 label

这个 label 顶部的两个角是圆角,底部的两个角是直角,底部还有一个小三角。

思路

CAShapeLayer 联合 UIBezierPath 画一个不规则的 layer 作为 label.layermask

具体实现

1. 自定义一个继承自UILabel的IrregularLabel

#import "IrregularLabel.h"@interface IrregularLabel ()/** 遮罩 */
@property (nonatomic, strong) CAShapeLayer *maskLayer;
/** 路径 */
@property (nonatomic, strong) UIBezierPath *borderPath;@end

2. 在初始化方法中进行相应初始化和设置

- (instancetype)initWithFrame:(CGRect)frame {if (self = [super initWithFrame:frame]) {// 初始化遮罩self.maskLayer = [CAShapeLayer layer];// 设置遮罩[self.layer setMask:self.maskLayer];// 初始化路径self.borderPath = [UIBezierPath bezierPath];}return self;
}

3. 在layoutSubviews方法中进行路径的设置

- (void)layoutSubviews {[super layoutSubviews];// 遮罩层frameself.maskLayer.frame = self.bounds;// 设置path起点[self.borderPath moveToPoint:CGPointMake(0, 10)];// 左上角的圆角[self.borderPath addQuadCurveToPoint:CGPointMake(10, 0) controlPoint:CGPointMake(0, 0)];// 直线,到右上角[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width - 10, 0)];// 右上角的圆角[self.borderPath addQuadCurveToPoint:CGPointMake(self.bounds.size.width, 10) controlPoint:CGPointMake(self.bounds.size.width, 0)];// 直线,到右下角[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width, self.bounds.size.height)];// 底部的小三角形[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width/2+5, self.bounds.size.height)];[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width/2, self.bounds.size.height-5)];[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width/2 - 5, self.bounds.size.height)];// 直线,到左下角[self.borderPath addLineToPoint:CGPointMake(0, self.bounds.size.height)];// 直线,回到起点[self.borderPath addLineToPoint:CGPointMake(0, 10)];// 将这个path赋值给maskLayer的pathself.maskLayer.path = self.borderPath.CGPath;
}
  • 左上角的坐标是 (0,0)
  • 右下角的坐标是 (maxX,maxY)

圆角是用的二次贝塞尔曲线,关于二次贝塞尔曲线,我在网上看到一张比较形象的图:

3个点确定一个圆角。

最终效果

- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.self.label = [[IrregularLabel alloc] initWithFrame:CGRectMake(90, 200, 200, 40)];[self.view addSubview:self.label];self.label.text = @"这是一个不规则label";self.label.textAlignment = NSTextAlignmentCenter;self.label.backgroundColor = [UIColor redColor];self.label.textColor = [UIColor whiteColor];self.label.font = [UIFont boldSystemFontOfSize:16];
}

效果图:

在这里插入图片描述


箭头 label

有读者说要带箭头的 label:

在这里插入图片描述

其实思路是一样的:

- (void)layoutSubviews {[super layoutSubviews];// 遮罩层frameself.maskLayer.frame = self.bounds;// 设置path起点[self.borderPath moveToPoint:CGPointMake(0, 10)];// 箭头[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width/2-5, 10)];[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width/2, 0)];[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width/2+5, 10)];// 到右上角[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width, 10)];// 到右下角[self.borderPath addLineToPoint:CGPointMake(self.bounds.size.width, self.bounds.size.height)];// 到左下角[self.borderPath addLineToPoint:CGPointMake(0, self.bounds.size.height)];// 回到起点[self.borderPath addLineToPoint:CGPointMake(0, 10)];// 将这个path赋值给maskLayer的pathself.maskLayer.path = self.borderPath.CGPath;
}

如果想让文本相对方形框居中,可以在 view 上放一个 label

http://www.ds6.com.cn/news/24222.html

相关文章:

  • 网站模板交易磁力帝
  • 郑州小程序定制公司seo排名优化怎样
  • 网站背景图片素材360上网安全导航
  • 外贸网站建站费用信息流广告投放
  • 教育网站制作论文提高搜索引擎检索效果的方法
  • 佛山做外贸网站咨询裂变营销
  • 宁波免费做网站免费二级域名分发网站源码
  • 在龙港网站哪里做sem优化公司
  • 区域网站怎么做谷歌seo外链
  • 做什么类型网站可以吸引用户今日国际新闻热点
  • 西安市政府门户网站公司建立网站的步骤
  • 秦淮html5响应式网站学生个人网页制作成品
  • 网站建设河南公司seo技术是什么
  • 正规的制作网页的公司windows优化大师是官方的吗
  • 网络推广公司多久能回本深圳seo优化公司哪家好
  • 平面广告设计课程总结简述seo对各类网站的作用
  • 推荐佛山伦教网站设计win优化大师
  • 江山有做网站开发吗河南网站排名优化
  • 可以做设计赚钱的网站厦门百度seo点击软件
  • 手机怎样使用域名访问网站全渠道营销成功案例
  • 网站设计欣赏导航什么平台免费推广效果最好
  • 做网站时搜索的代码是什么不限次数观看视频的app
  • 网站怎么做微信支付广告平台有哪些
  • 代做网站平台深圳新闻今日最新
  • 最新新闻热点事件短篇网站优化+山东
  • 我想学习做网站朋友圈广告投放平台
  • 成都网站设计制作公司网站制作推广
  • 日文设计网站广告资源对接平台
  • 在线定制logo小红书seo
  • 注册网站填写不了地区网站如何推广运营