IOS_视图实现圆角效果的三种方法及比较
通过代码,至少有三种方法可以为视图加上圆角效果。附例子:
https://github.com/weipin/RoundedCorner
方法一、layer.cornerRadius
第一种方法最简单,通过层对象的cornerRadius属性实现圆角效果,代码如下:
view.layer.cornerRadius = 8.0;
view.layer.masksToBounds = YES;
缺点是会有2次rending passes。首先off-screen画出带圆角的图,然后在视图上画第二次。
方法二、通过UIBezierPath对象设置带圆角的作图区域
这种方法的好处是只有一次rending pass,是三种方法中效率最高的。缺点是需要override视图。代码如下:
- (void)drawRect:(CGRect)rect {
CGRect bounds = self.bounds;
[[UIColor whiteColor] set];
UIRectFill(bounds);
[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:8.0] addClip];
[self.image drawInRect:bounds];
}
方法三、通过另一张mask图创建新图
首先需要一张mask图,然后将这张mask图和原图合成,得到带圆角的新图。效率和方法一类似,合成新图等同于在off-screen作图。该方法的优点是可以不局限于圆角,全凭mask图控制。
总结:
如果要效率(例如要提高table view的滚动帧数),就多用方法二。要方便,自然是方法一。如果需要的特殊形状UIBezierPath对象无法构成,则考虑方法三。
例子:https://github.com/weipin/RoundedCorner
例子中,tab 1是无圆角效果,其他三个tab各自对应三种方法。
IOS_视图实现圆角效果的三种方法及比较的更多相关文章
- Qt样式表之三:实现按钮三态效果的三种方法
按钮的三态,指的是普通态.鼠标的悬停态.按下态.Qt中如果使用的是默认按钮,三态的效果是有的,鼠标放上去会变色,点击的时候有凹陷的效果. 但是如果自定义按钮实现三态效果有三种方法,一种是设置背景图,主 ...
- windows之实现3D立体效果的三种方法
第一种:快捷键:win+tab 另外一种:cmd输入rundll32.exe dwmapi #105 第三种:使用软件bumptop
- Android课程---Android设置透明效果的三种方法(转)
1.使用Android系统自带的透明效果资源 <Button android:background="@android:color/transparent"/> ...
- QT下的几种透明效果(三种方法:调色板,透明度属性,自绘)
1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透. QPalette pal = palette(); pal.setColor(QPalette: ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- MVC控制器向View视图传值的三种方法
首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下:
- #IOS-navigation中左滑pop的三种方法
IOS-navigation中左滑pop的三种方法 系统自带pop方法 如果我们没有对navigation中的back按钮进行自定义,我们可以直接使用系统自带的左滑pop方法.但是如果我们对back按 ...
- MySQL提供了以下三种方法用于获取数据库对象的元数据
MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...
- css+div制作圆角矩形的四种方法
圆角矩形一向是设计师最倾心的一种设计,因为他们可以让整个网页生动起来,不那么死板,所以,作为一个优秀的网页设计师,学会一种或多种编辑圆角矩形的方法是必不可少的,而且圆角矩形应用范围极广,一个网页内的所 ...
随机推荐
- Unity 打包后文件系统访问的一个小细节
Android: 使用 File 类 来访文本文件系统不区分大小写:但是访问 jar 包内的文件是区分大小写的,比如使用 www类,都需要区分大小写. iOS: 使用 File 类 来访文本文件系统严 ...
- 字典转模型第三方框架---MJExtension
字典转模型第三方框架 Mantle 所有模型都必须继承自MTModel JSONModel 所有模型都必须继承自JSONModel MJExtension 不需要强制继承任何其他类 设计框架需要考虑的 ...
- marvell笔试题(嵌入式软件)
有幸去Marvell参加面试,由于其要求WCDMA/GSM之类的,我还特地恶补了下这方面的知识.后来坐了2个小时的地铁后,到达了Marvell.公司还蛮不错的,里面环境都还可以.我投了这家公司也是同学 ...
- HW5.9
public class Solution { public static void main(String[] args) { System.out.printf("%s\t%s\t%s\ ...
- Codeforces149D - Coloring Brackets(区间DP)
题目大意 要求你对一个合法的括号序列进行染色,并且需要满足以下条件 1.要么不染色,要么染红色或者蓝色 2.对于任何一对括号,他们当中有且仅有一个被染色 3.相邻的括号不能染相同的颜色 题解 用区间d ...
- 问题-Error creating object. Please verify that the Microsoft Data Access Components 2.1(or later) have been properly installed.
问题现象:软件在启动时报如下错误信息:Exception Exception in module zhujiangguanjia.exe at 001da37f. Error creating obj ...
- js showModalDialog打开新的页面给原页面传值问题
a.html中打开一个新页面b.html,b.html页面给a.html中的input传一个值并将value赋给input框. a.html: <html> <head> ...
- java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp
1.首先配置web.xml 添加一下代码 <error-page> <error-code>500</error-code> <location>/e ...
- iOS开发中使用CIDetector检测人脸
在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置.在 iOS7中,苹果又加入了检测是否微笑的功能.通过使用 CIDetect ...
- linux中配置Java环境
一. 下载JDK 下载linux版本的jdk32(64) 二. 需要配置的环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是 ...