博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设置指定边界圆角
阅读量:6196 次
发布时间:2019-06-21

本文共 2156 字,大约阅读时间需要 7 分钟。

最近项目中需要用到一些视图的某些边界设置为圆角,比如指定一个长方形view,需要设置其左边为圆形,所以就封装一个类来实现指定边界的圆角

1,首先创建一个继承于UIView的分类(由于项目中我需设置一个button的圆角, 所以命名为Btn)

 

2.在接口文件中设置接口

这里参数:distance 为需要设置圆角的那个边界的高度或宽度

#import 
typedef enum { ZSSideRoundLeft, ZSSideRoundRight, ZSSideRoundUp, ZSSideRoundDown} ZSSideRound;@interface UIView (ZSSideRoundBtn)- (void)roundSide:(ZSSideRound)side distance:(CGFloat)distance;@end

 

 

3.在.m中实现 (在这里指定边界设置为半圆)

#import "UIView+ZSSideRoundBtn.h"@implementation UIView (ZSSideRoundBtn)- (void)roundSide:(ZSSideRound)side distance:(CGFloat)distance{    UIBezierPath* maskPath;    if (side == ZSSideRoundLeft)    {        maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds                                         byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft)                                               cornerRadii:CGSizeMake(distance/2, distance/2)];    }    else if (side == ZSSideRoundRight)    {        maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds                                         byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight)                                               cornerRadii:CGSizeMake(distance/2, distance/2)];    }    else if (side == ZSSideRoundUp)    {        maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds                                         byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)                                               cornerRadii:CGSizeMake(distance/2, distance/2)];    }    else    {        maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds                                         byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight)                                               cornerRadii:CGSizeMake(distance/2, distance/2)];    }    // 创建形状图层,设置它的路径    CAShapeLayer* maskLayer = [CAShapeLayer layer];    maskLayer.frame = self.bounds;    maskLayer.path = maskPath.CGPath;    // 新创建的形状图层设置为图像视图层的面具    self.layer.mask = maskLayer;    [self.layer setMasksToBounds:YES];}@end

 

 

搞定,以后需要设置一些UIView的子类视图的边界为半圆时,直接引用就OK

 

转载于:https://www.cnblogs.com/Tempation/p/5371597.html

你可能感兴趣的文章
My97DatePicker基本用法
查看>>
C++ 类成员的构造和析构顺序
查看>>
Linux Namespace : 简介
查看>>
[Dart] Understand Variables and Constants in Dart
查看>>
Javascript根据GPS两点经纬度信息计算距离
查看>>
推荐30个用于微服务的顶级工具
查看>>
JavaMail 接收邮件及删除
查看>>
c++默认参数函数注意事项
查看>>
【Linux】linux/unix下telnet提示Escape character is '^]'的意义
查看>>
漏洞安全
查看>>
异步任务spring @Async注解源码解析
查看>>
人工智能与未来工作
查看>>
css文字效果(文字剪贴蒙版,text-shodow的应用,文字排版等…)
查看>>
MySQL伪master+Binlog+同步【转】
查看>>
模仿以太坊 ERC20 规范的 Hyperledger Fabric 实现 Token 通证
查看>>
Asp.Net Core 如何在 IIS 中设置环境变量
查看>>
IntelliJ IDEA推荐插件
查看>>
RandomStringUtils RandomUtils
查看>>
Notification 浏览器的消息推送
查看>>
[转载]你所不了解的DevOps
查看>>