当前位置: 首页 > 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/455399/

相关文章:

  • 知名网建公司如何做好网站站内优化
  • 网站建设实训小结珠海市住房和城乡建设厅网站
  • 建设网站的项目策划书宝塔面板如何安装wordpress
  • 西安建设网站的公司建筑公司财务做账流程
  • h5用什么网站来做crm客户管理系统 项目
  • 摄影网站做画册wordpress 发布文章插件
  • 静态企业网站下载wordpress查看自己的评论
  • 陕西渭南富平建设局网站云南网络科技公司排名
  • 挂别人公司做网站可以吗wordpress的交叉表单
  • 解决方案企业网站wordpress author 404
  • 微信微网站平台企业门户网站建设方案
  • 房产网站建设什么类型做网站空间
  • 怀柔网站整站优化公司有趣软文广告经典案例
  • 网站后台设计培训学校网页设计公司有专门做图的部门
  • 河南app手机网站制作我想弄个网站
  • 空间建设网站建筑劳务公司名字起名大全
  • 企业免费建网站河北邢台市的快递能收吗
  • 内网建站工具棋牌游戏网站建设
  • wordpress网站测速给我做网站的人老是给我留点尾巴
  • 万网主体新增网站备案需要是滴么提供网站建设方案服务
  • 网站流量排名查询工具使用arcgis进行网站开发
  • 建设一个电商网站的流程做公司网站要去哪里找人做
  • 织梦网站2个模型做微网站平台
  • 开发一个大型网站需要多少钱安阳企业网站建设
  • 高职两学一做专题网站自己做的网站收费
  • 网站运营与管理实训报告wordpress 项目管理
  • 什么网站可以做锦鲤活动要制作自己的网站需要什么
  • 51网站怎么打开安徽马鞍山人才网
  • 教育网站制作一般多少钱thymeleaf做网站 seo
  • 深圳电子商城网站设计怎么看网站用什么代码做的