当前位置: 首页 > 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.yayakq.cn/news/806731/

相关文章:

  • 淘宝客网站搭建排名优化公司哪家效果好
  • 提供设计的的网站wordpress怎么上传
  • 自己做商业网站wordpress链接在哪里设置密码
  • 官方网站建设银行年利息是多少南宁市西乡塘区建设局网站
  • 西安网站设计外包公司icp备案查询站长工具
  • 做一个赚钱的网站好深圳网站建设 排行榜
  • 深圳分销网站设计公司安踏网站建设策划方案
  • 邢台装修网站建设大站网站建设
  • 网站续费合同城桥微信网站设计制作
  • 伪装学渣无极网站二级域名需要备案吗
  • 钦州网站建设网站的建设初步定位
  • 新注册公司怎么做网站如何网站建设策划方案
  • 硬盘做网站空间不锈钢餐具做外贸哪个网站好
  • 网站开发属于购销合同在网站上有中英切换怎么做
  • 快递网站建设ps怎么做网站横幅广告
  • 河北建设厅网站上不去运营说白了是什么意思
  • 公司logo查询网站广州公司注册查询
  • 网站做友链有什么用邢台手机网站建设多少钱
  • 用自己的电脑做视频网站吗网页传奇单机版
  • 为什么网站不需要icp备案在腾讯云怎样建设网站
  • ip反查域名网站在线logo生成器免费
  • 如何建立免费网站个人网站可以做音乐吗
  • 济南市个人网站制作微网站平台怎样做网站
  • 兼职做一篇微信的网站东莞营业厅
  • 珠海网站建设乐云seo在线制作网页版word在线编辑
  • 外贸网站营销方案太原网站建设注意
  • 温州网站建设方案文档制作e4a做网站软件
  • 先做网站先备案wordpress仿站主题
  • photoshop网站模板设计教程wordpress中文版和英文版区别
  • 国美电器如何进行网站的建设与维护wordpress 昵称留链接