iOS:关于UIView切角的两种实现方式
转载自:http://www.jianshu.com/p/451b7fa94e2a
第一种: 我想你一见到代码,就瞬间有吐的冲动,最常用的一种方式。。。
UIButton *button = [[UIButton alloc]init]; button.frame = CGRectMake(100, 100, 100, 40); button.backgroundColor = [UIColor redColor]; button.layer.cornerRadius = 20.0f; button.layer.masksToBounds = YES;[button setTitle:@"测试" forState:UIControlStateNormal]; [self.view addSubview:button];
如此简单...但是,它默认强制裁掉了四个角啊。。。那问题来了,假如需求只要求切一个角呢。。。看第二种方法
第二种: 还是在layer
上做文章,不同采用的是类扩展的方法,接下来以UIButton
为例,具体效果看下图:
#import "UIButton+Corner.h"@implementation UIButton (Corner)- (void)corner {CGRect bounds = self.bounds;UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(20, 20)];CAShapeLayer *maskLayer = [CAShapeLayer layer];maskLayer.frame = bounds;maskLayer.path = maskPath.CGPath;[self.layer addSublayer:maskLayer];self.layer.mask = maskLayer; } @end
从上不难看出代码关键所在...这里只做简单的扩展...具体根据项目需求来
再次列出官方裁边的可选项
typedef NS_OPTIONS(NSUInteger, UIRectCorner) {UIRectCornerTopLeft = 1 << 0,UIRectCornerTopRight = 1 << 1,UIRectCornerBottomLeft = 1 << 2,UIRectCornerBottomRight = 1 << 3,UIRectCornerAllCorners = ~0UL };
iOS:关于UIView切角的两种实现方式相关推荐
- IOS单例的两种实现方式
单例模式算是开发中比较常见的一种模式了.在iOS中,单例有两种实现方式(至少我目前只发现两种). 根据线程安全的实现来区分,一种是使用@synchronized ,另一种是使用GCD的dispatch ...
- iOS: JS和Native交互的两种方法,iosjsnative交互
iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...
- iOS活动倒计时的两种实现方式
代码地址如下: http://www.demodashi.com/demo/11076.html 在做些活动界面或者限时验证码时, 经常会使用一些倒计时突出展现. 现提供两种方案: 一.使用NSTim ...
- IOS学习之UISwitch控件两种使用方法和监听
IOS学习之UISwitch控件两种使用方法和监听 分类: IOS开发入门2012-06-15 11:48 1363人阅读 评论(0) 收藏 举报 一.第一种创建UISwitch控件的方法,在代码中动 ...
- 横切关注点的两种实现方法
横切关注点的两种实现方法 软件系统,可看作由一组关注点组成.其中,直接的业务关注点,是直切关注点.而为直切关注点提供服务的,就是横切关注点. 有两种方法可以提供横切关注点,一种是传统的OOP方法,提供 ...
- 【Markdown】 实现上角标和下角标的两种方法(详细讲解!!!)
作者:MiTu_-_ 本帖内容著作权归作者所有,转载请务必保留本文链接 Markdown实现上下角标的两种方法 第一种 使用Markdown自带的代码格式: 下标: ~ (内容) ~ 例:H2O H~ ...
- G-sensor的两种使用方式
在系统中G-sensor的两种使用方式 <1> 中断方式:在此方式中首先会对G-sensor器件设定一个阈(yu)值,器件感知加速度当值大于设定的阈值时器件触发CPU中断,系统得到一次甩动 ...
- 开灯关灯问题的两种解决方式(数学建模线性代数的应用和编程实现)
开灯关灯问题的两种解决方式 1.问题介绍 2.编程实现算法及其代码(详细) 3.就该题进行数学建模–体验线性代数的使用 1.问题介绍 有一个按钮组成的矩阵,其中每行有5个按钮,共5行.每个按钮旁边有一 ...
- 前端与后端,顶象设备指纹的两种接入方式
在如今的移动互联网时代,用户上网的设备多元化.连接互联网的渠道多样化.接入服务的地点任意化,用户的操作行为个性化,用户设备更加难以被识别和跟踪,由此给广大开展数字化业务的企业,尤其互联网企业带来全新的 ...
- C++中的两种绑定方式(静态绑定、动态绑定)
两种绑定方式 静态绑定:在编译时刻,根据指针或引用变量的静态类型来决定成员函数属于哪一个类. 动态绑定:在运行时刻,根据指针或引用变量实际指向或引用的对象类型(动态类型)来确定成员函数属于哪一个类. ...
最新文章
- docker 安装oracle_阿里云使用Docker搭建Hadoop集群
- Android之ArrayAdapter使用
- 关于BDD100k数据输入处理mask变为56*56
- Oracle 11g DG主库节点2 ORA-00245: control file backup fail
- spring 配置文件模板
- php vo 遍历,thinkPHP简单遍历数组方法分析
- mingW与cygwin 异同
- python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型
- 初学Docker容器网络不得不看的学习笔记
- 4、Linux的文件系统结构(目录树结构)
- Spring: Bean 注册 - BeanDefinitionRegistry
- 时区时钟插件html,日期、时间选择控件 - datetimepicker
- python3怎么运行代码_python怎么运行代码
- java mail eml_使用JavaMail解析EML文件
- matlab如何把Excel数据合并,《matlab怎么合并excel单元格并赋值?》 matlab合并 excel表格数据...
- 使用C++实现CE中的代码注入
- word中删除页眉的横线
- 开车总结-2021.7
- 弱网工具-NEWT应用
- 20200812 java 笔记