博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
setMasksToBounds
阅读量:5031 次
发布时间:2019-06-12

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

在IB中,当你使用Custom类型的Button时,你可以指定按钮的背景色。但当你运行时按钮就失去了圆角特性,你看到的仅仅是一个方块。因为custombutton没有定义任何属性默认值。你必须自己去定义它们,这就需要使用Core Animation Layer。

提示:编写代码之前,需要导入QuartzCore框架到工程中,然后#import<QuartzCore/QuartzCore.h>。我会通常会把它放在.pch文件中。

IB没有干的事情,你只能通过代码来做。例如,如果你想做一个圆角且红色背景的按钮,你需要将按钮链接到你的viewcontroller的出口中,然后在Xcode中通过它的layer属性修改按钮的下列属性。

 [[button layer] setCornerRadius:8.0f];

[[button layer] setMasksToBounds:YES];

[[button layer] setBorderWidth:1.0f];

上述代码将layer的圆角半径设为8.0,-setMasksToBounds:方法告诉layer将位于它之下的layer都遮盖住。这是必须的,这样会使圆角不被遮,但是这样会导致阴影效果没有,很多网上都给出资料,再添加一个SubLayer,添加阴影。(意思也就是讲mask作为bound的边界,对原来的frame进行裁剪??)

 

正确的解释:

Because shadow is an effect done outside the View, and that masksToBounds set to YES will tell the UIView not to draw everything that is outside itself.

 

最后,将border设为1.0,将显示出按钮的边框。默认边框色为黑色,你可以用-setBorderColor:方法修改为其他颜色,参数使用CGColorRef类型(例如[[UIColorgreenColor]CGColor]会显示绿色边框)。

 

两个view设置阴影的效果:注意是view1添加到view2,不要反了

UIView *view1 = [[UIView alloc] init]; 

UIView *view2 = [[UIView alloc] init];   

view1.layer.cornerRadius = 5.0; 

view1.layer.masksToBounds = YES; 

view2.layer.cornerRadius = 5.0; 

view2.layer.shadowColor = [[UIColor blackColor] CGColor]; 

view2.layer.shadowOpacity = 1.0; 

view2.layer.shadowRadius = 10.0; 

view2.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); 

[view2 addSubview:view1]; 

[view1 release]; 

 http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths

 

转载于:https://www.cnblogs.com/wcLT/p/4755106.html

你可能感兴趣的文章
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>
完整ASP.Net Excel导入
查看>>
判断CPU大小端示例代码
查看>>
ARTS打卡第13周
查看>>
循环队列的运用---求K阶斐波那契序列
查看>>
pta 编程题14 Huffman Codes
查看>>
初始化bootstrap treeview树节点
查看>>
python selenium向<sapn>标签中写入内容
查看>>
JS常用坐标
查看>>
使用”结构化的思考方式“来编码和使用”流程化的思考方式“来编码,孰优孰劣?...
查看>>
C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】...
查看>>