通过代码,至少有三种方法可以为视图加上圆角效果。附例子:
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_视图实现圆角效果的三种方法及比较的更多相关文章

  1. Qt样式表之三:实现按钮三态效果的三种方法

    按钮的三态,指的是普通态.鼠标的悬停态.按下态.Qt中如果使用的是默认按钮,三态的效果是有的,鼠标放上去会变色,点击的时候有凹陷的效果. 但是如果自定义按钮实现三态效果有三种方法,一种是设置背景图,主 ...

  2. windows之实现3D立体效果的三种方法

    第一种:快捷键:win+tab 另外一种:cmd输入rundll32.exe dwmapi #105 第三种:使用软件bumptop

  3. Android课程---Android设置透明效果的三种方法(转)

    1.使用Android系统自带的透明效果资源 <Button  android:background="@android:color/transparent"/>   ...

  4. QT下的几种透明效果(三种方法:调色板,透明度属性,自绘)

    1.窗口整体透明,但是窗体上的控件不透明.    通过设置窗体的背景色来实现,将背景色设置为全透.  QPalette pal = palette();  pal.setColor(QPalette: ...

  5. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

  6. MVC控制器向View视图传值的三种方法

    首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下:

  7. #IOS-navigation中左滑pop的三种方法

    IOS-navigation中左滑pop的三种方法 系统自带pop方法 如果我们没有对navigation中的back按钮进行自定义,我们可以直接使用系统自带的左滑pop方法.但是如果我们对back按 ...

  8. MySQL提供了以下三种方法用于获取数据库对象的元数据

    MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...

  9. css+div制作圆角矩形的四种方法

    圆角矩形一向是设计师最倾心的一种设计,因为他们可以让整个网页生动起来,不那么死板,所以,作为一个优秀的网页设计师,学会一种或多种编辑圆角矩形的方法是必不可少的,而且圆角矩形应用范围极广,一个网页内的所 ...

随机推荐

  1. [codevs2170]悠闲的漫步

    题目来源 http://codevs.cn/problem/2170/ http://www.tyvj.cn/p/1033 背景 USACO OCT09 5TH 描述 Bessie透过牛棚的大门向外望 ...

  2. 【CSS】Beginner6:Border

    1.border-style:solid实线,dashed虚线,double双线,dotted点状,groove凹槽,ridge垄状,inset,outset 2.border0-width:bord ...

  3. 使用 Windows PowerShell 管理Windows Azure映像

    你可以使用 Azure PowerShell 模块中的 cmdlet 管理可供你的 Azure 订阅使用的映像.这包括 Azure 提供的映像以及你上载的映像.对于某些映像任务,你还可以使用 Azur ...

  4. Add And Reset a Federation Server to a Federation Server Farm adfs ad

    Applies To: Active Directory Federation Services (AD FS) 2.0 After you install the Active Directory ...

  5. 64位linux安装android sdk的问题

    截至到今天,似乎在64位机器下安装android sdk存在不能运行的问题,可以用以下方法解决: Android SDK requires: Fedora 17 64bit with 32bit An ...

  6. 经典 Linux & VIM 教程

    简明 Vim 练级攻略: http://coolshell.cn/articles/5426.html VIM快捷键: http://coolshell.cn/wp-content/uploads/2 ...

  7. jquery实现公告上下滚动显示

    js: // JavaScript Documentfunction b(){ t = parseInt(x.css('top')); y.css('top','19px'); x.animate({ ...

  8. Cocos2d-x创建新工程

    转自:http://www.cnblogs.com/andyque/archive/2011/09/27/2192920.html 而是新建一个工程.然后,我们不是copy文件夹.lib和dll了.我 ...

  9. iOS 状态栏、导航栏、工具栏、选项卡大小

    1.状态栏状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注意,两倍高度的状态栏在好像只能在纵向的模式下使用.如下图用户可以隐藏状态栏,也可以将状态栏设置为灰色,黑色或者半透明的黑 ...

  10. 生成N个不相等的随机数

    近期项目中须要生成N个不相等的随机数.实现的时候.赶工期,又有项目中N非常小(0-100)直接谢了一个最直观的方法: public static List<Integer> randomS ...