我必须创建一个UIView
将具有圆角,边框,阴影的drawRect()
自定义,其方法被重写以提供自定义绘图代码,并通过该代码将多条直线绘制到视图中(我在这里需要使用快速,轻便的方法,因为许多这些视图中的一个可以呈现)。
我当前面临的问题是,一旦drawRect()
在视图类中进行覆盖(即使其中没有任何自定义代码),阴影也将不再适用于圆角。请参见附件中的图片:
在视图控制器中,我使用以下代码:
view.layer.cornerRadius = 10;
view.layer.masksToBounds = true;
view.layer.borderColor = UIColor.grayColor().CGColor;
view.layer.borderWidth = 0.5;
view.layer.contentsScale = UIScreen.mainScreen().scale;
view.layer.shadowColor = UIColor.blackColor().CGColor;
view.layer.shadowOffset = CGSizeZero;
view.layer.shadowRadius = 5.0;
view.layer.shadowOpacity = 0.5;
view.layer.masksToBounds = false;
view.clipsToBounds = false;
在覆盖的情况下,drawContext()
我将使用类似:
var context:CGContext = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
CGContextMoveToPoint(context, 0.0, 0.0); //start at this point
CGContextAddLineToPoint(context, 20.0, 20.0); //draw to this point
CGContextStrokePath(context);
但是如上所述,即使不添加此代码,也会出现阴影问题。
除了这种与圆角和阴影兼容的方法以外,还有其他/更好的方法可以将轻量级元素绘制到视图上吗?我不想在视图中添加任何不必要的额外视图或图像上下文,因为它们需要轻巧和高性能。
这是一个棘手的问题。UIView
的clipsToBounds
需要,以获得圆角。但是CALayer
的masksToBounds
必须是false
这样的阴影是可见的。不知何故,如果drawRect
不被覆盖,一切都会起作用,但实际上不应该被覆盖。
解决方案是创建一个超级视图以提供阴影(在下面的演示中是shadowView
)。您可以在Playground中测试以下内容:
class MyView : UIView {
override func drawRect(rect: CGRect) {
let c = UIGraphicsGetCurrentContext()
CGContextAddRect(c, CGRectMake(10, 10, 80, 80))
CGContextSetStrokeColorWithColor(c , UIColor.redColor().CGColor)
CGContextStrokePath(c)
}
}
let superview = UIView(frame: CGRectMake(0, 0, 200, 200))
let shadowView = UIView(frame: CGRectMake(50, 50, 100, 100))
shadowView.layer.shadowColor = UIColor.blackColor().CGColor
shadowView.layer.shadowOffset = CGSizeZero
shadowView.layer.shadowOpacity = 0.5
shadowView.layer.shadowRadius = 5
let view = MyView(frame: shadowView.bounds)
view.backgroundColor = UIColor.whiteColor()
view.layer.cornerRadius = 10.0
view.layer.borderColor = UIColor.grayColor().CGColor
view.layer.borderWidth = 0.5
view.clipsToBounds = true
shadowView.addSubview(view)
superview.addSubview(shadowView)
结果:
问题内容: 我有一个三行的tableview。我试图使表行具有圆角,并且在整个tableview周围也有阴影效果。出于某种原因,我无法使tableview都具有圆角和阴影效果,但是如果我注释掉负责其中一个功能的代码,则可以单独进行处理。这是我正在使用的代码: 问题答案: 您可以将表视图添加到容器视图,并将阴影添加到该容器视图: 编辑 Swift 3.0:
问题内容: 我正在更改UITableViewCell的宽度,以使单元格较小,但用户仍可以沿tableview的边缘滚动。 然后我转过身来: 到目前为止一切都很好。问题发生在阴影处。边界被遮盖,因此阴影显然不会出现。我查询了其他答案,但似乎无法弄清楚如何沿边界拐角 并 显示阴影。 所以我的问题–如何减小宽度,圆角并同时向UITableViewCell添加阴影? 更新: 尝试R Moyer的答案 问题
本文向大家介绍Android自定义圆角ImageView,包括了Android自定义圆角ImageView的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了。 java类如下: 定义一个attr.xml的文件,放在values目录下面,内容如下: 使用示例如下: 先要声明属性的名字空间: 然后再写跟一般定义View一样: 效果如图: 以上代码简单介绍了Android自定义圆
在将此标记为副本之前,我想说,我已经浏览了这么多类似于此、此和此的帖子。但我还没有找到适合我的解决方案。 我正在尝试使用创建一个弹出窗口。我想使用圆角和下拉阴影(如
我正在尝试创建一个可绘制的自定义阴影,如下图所示 这不是一个普通的物质阴影,首先它有一个更大的半径,并且在所有方面(顶部,底部,右侧,左侧)都有光环效果。 我试过梯度,但它只有一个圆形半径,在这里不起作用,因为它是矩形的。 我甚至试着把CardView提升到100 DP,但是显然提升是有限制的。 我在网上寻找了一些解决方案,大多数都非常复杂和有限,而另一些则是关于shadow的旧实现(回到Andr
本文向大家介绍Android自定义控件之圆形、圆角ImageView,包括了Android自定义控件之圆形、圆角ImageView的使用技巧和注意事项,需要的朋友参考一下 一、问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二、怎么搞? 机智的我,第一想法就是,切一张中间圆形透明、四周与底色相同、尺寸与头像相同的蒙板图片,盖在头像上不就完事了嘛,哈哈哈! 在背景纯