MasksToBounds

在IB中,当你使用Custom类型的Button时,你可以指定按钮的背景色。但当你运行时按钮就失去了圆角特性,你看到的仅仅是一个方块。因为custombutton没有定义任何属性默认值。你必须自己去定义它们,这就需要使用Core Animation Layer。提示:编写代码之前,需要导入QuartzCore框架到工程中,然后#import。我会通常会把它放在.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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在IB中,当你使用Custom类型的Button时,你可以指定按钮的背景色。但当你运行时按钮就失去了圆角特性,你看...
    VincentHK阅读 2,435评论 0 1
  • //设置尺寸为屏幕尺寸的时候self.window = [[UIWindow alloc] initWithFra...
    LuckTime阅读 980评论 0 0
  • 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现cl...
    以德扶人阅读 2,889评论 2 50
  • masksToBounds 一、首先简单的说下UIView的CALayer. UIView之所以能显示在屏幕上,完...
    不舍的追逐阅读 3,754评论 0 1
  • 在一次偶然的机会下,我和三位舍友一起到机场端菜,那段时间过得很快,也是美好的回忆。 14年寒假,我和三位舍友约好到...
    萧筱kristina阅读 258评论 2 1

友情链接更多精彩内容