`
zani
  • 浏览: 356679 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Why masksToBounds = YES prevents CALayer shadow?

 
阅读更多

layer.masksToBounds 和layer.shadowOffset同时对一个View使用会使得shadow出不来.

 

 

 I'm adding a drop shadow effect to one my UIView. Which works pretty well. But as soon as I set the view's masksToBounds property to YES. The drop shadow effect isn't rendered any more.

 

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.

If you want a roundedCorner view with shadow I suggest you do it with 2 views...

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://stackoverflow.com/questions/3690972/why-maskstobounds-yes-prevents-calayer-shadow 

分享到:
评论

相关推荐

    iOS控件圆角类别(OC & Swift)

    view.layer.masksToBounds = YES; view.layer.cornerRadius = radius; view.layer.borderWidth = 1.0f; // 可选,如果需要边框 view.layer.borderColor = [UIColor blackColor].CGColor; // 可选,设置边框颜色 ...

    CALayer基本使用

    **CALayer基本使用** 在iOS开发中,CALayer是苹果提供的一个核心图形层类,它负责绘制和动画处理。CALayer是UIKit框架的基础,几乎所有的视图(UIView)都有一个对应的CALayer。理解并熟练使用CALayer对于优化性能...

    iOSCornerRadius失效的解决方案.docx

    - **定义:** `masksToBounds`是`CALayer`的一个布尔属性,用于指定子图层是否应该在超出其父图层边界时被裁剪。 - 如果设置为`YES`,则超出父图层边界的任何内容都会被裁剪掉; - 如果设置为`NO`,则不会裁剪超出...

    CALayer简单教程

    内容层设置`masksToBounds = YES`以实现圆角,而阴影层则保持原始设置。 总之,`CALayer`是iOS和macOS开发中强大的图形渲染工具,通过深入理解和灵活运用,开发者可以构建出丰富多样的视觉效果和流畅的动画。学习和...

    JxbScaleButton:倒数按钮

    btn.layer.masksToBounds = YES;[self.view addSubview:btn];[self btnAction:btn];[btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];- (void)btnAction:(id)...

    iOS设置圆角的三种方式

    第一种方法:通过设置layer的属性 最简单的一种,但是很影响性能,一般在正常的开发中使用很少. UIImageView *imageView = [[UIImageView alloc]initWithFrame:... imageView.layer.masksToBounds = YES; [self.v

    ios 贝塞尔曲线切割圆角的方法

    ios 系统框架已经给我们提供了相应的切割圆角的方法, 但是如果在一个见面有很多控件切割的话会出现卡顿和个别不切得现在 /* 创建一个Button */ ... button.layer.masksToBounds = YES; /* 贝塞尔曲线切割 */ /**

    CALayer的基本使用demo

    **CALayer基础知识** 在iOS开发中,`CALayer`是苹果的核心动画框架(Core Animation)中的基础类,它负责在屏幕上绘制和管理视图的内容。`UIView`实际上是由一个`CALayer`对象支持的,视图的大部分视觉效果都是通过...

    ios 滑动图片的效果可以设置图片为圆加阴影

    imageView.layer.masksToBounds = true imageView.layer.cornerRadius = imageView.frame.width / 2 ``` 其次,`UIScrollView`是iOS中用来实现滚动效果的控件,它可以容纳多个子视图,并允许用户水平或垂直滚动查看...

    ios应用源码之圆形按钮风格tab标签 2018127

    self.layer.masksToBounds = YES; } ``` 然后,这些自定义的圆形按钮会被添加到Tab Bar Controller的各个Tab上。这可能通过重写`UITabBarController`的`viewControllers`属性或者在Storyboard中进行配置。为了实现...

    CALayer的使用

    在iOS开发中,CALayer是Core Animation框架的核心组件,它负责在屏幕上绘制和动画化视觉内容。`CALayer`是一个轻量级的对象,用于管理视图的几何形状、内容、透明度以及各种视觉效果。本篇文章将深入探讨`CALayer`的...

    ios-RoundTableviewCell.zip

    同时,别忘了开启`masksToBounds`属性,这样子视图的边缘会被裁剪成与父视图相同的圆角形状。 ```swift override func layoutSubviews() { super.layoutSubviews() contentView.layer.cornerRadius = 8.0 // ...

    CALayer 图层处理

    9. `masksToBounds`: 如果为`YES`,超出边界的图层内容将被裁剪。 二、`CALayer`的子图层和分组 1. `sublayers`: 包含图层的子图层数组,可以创建层级结构,实现复杂的布局和动画。 2. `superlayer`: 指向当前图层...

    UIView/UIButton任意添加某个边框

    但是,`UIView`默认没有开启边框,所以我们需要先调用`setNeedsLayout()`方法更新布局,然后设置`layer.masksToBounds = true`以确保边框在视图内部显示。 ```swift let view = UIView() view.layer.borderWidth = ...

    图层CALayer的一些知识

    在iOS和macOS开发中,`CALayer`是Core Animation框架的核心组成部分,它是一个轻量级的对象,用于绘制和管理视觉元素。`CALayer`不仅仅是一个绘图对象,还提供了丰富的动画功能,使得开发者能够创建出流畅、高性能的...

    简单的3D动画效果

    layer.masksToBounds = YES; layer.shouldRasterize = YES; layer.rasterizationScale = [UIScreen mainScreen].scale; ``` 这里,我们开启了视图层的边界剪裁(masksToBounds),确保超出边界的部分不会显示;启用...

    IOS 中CALayer绘制图片的实例详解

    在iOS开发中,CALayer是UI视图的基础组件,它负责绘制内容并处理动画效果。在某些场景下,我们可能需要直接使用CALayer来绘制图片,而不是依赖于UIImageView。这篇文章将详细讲解如何在CALayer中绘制图片,并通过...

    这是一个oc 实现圆角的方法

    myView.layer.masksToBounds = YES; // 限制视图的边界,防止内容溢出圆角 [self.view addSubview:myView]; ``` 这里的`cornerRadius`属性设置了视图的四个角的圆角半径,而`masksToBounds`属性确保了视图的内容...

    新建图层Demo

    layer.masksToBounds = true // 防止内容超出边框 layer.shadowColor = UIColor.black.cgColor layer.shadowOpacity = 0.5 layer.shadowRadius = 5 layer.contentsGravity = .center // 内容居中 ``` 从压缩包中的...

    swift-Swift一行代码创建自定义tabBar-支持小红点数字角标自定义高度

    badge.layer.masksToBounds = true item.selectedImage = item.image?.withRenderingMode(.alwaysOriginal) item.image = item.selectedImage?.withTintColor(.clear) item.addSubview(badge) } } ``` 此外,...

Global site tag (gtag.js) - Google Analytics