具有模糊边框的UIView

6

有没有一种方法可以模糊/淡化UIView的边框?

到目前为止,我在核心图形方面做得很少或没有。


还没有开始做。我希望库已经有一种方法可以完成它,就像处理圆角一样。如果需要使用核心图形进行自定义处理,那么现在学习它所需的时间并不值得这种效果。 - Padin215
你已经阅读了 UIView 类参考文档 吗? - holex
没有内置的方法来完成这个任务。你可以通过使用淡入淡出渐变CALayer进行遮罩来实现,这并不太难。模糊是一个非常不同的问题。 - Ben Zotto
2个回答

15
你可以尝试设置UIView的CALayer,使其具有较大的阴影半径和透明度。类似于以下代码:
    #include <QuartzCore/QuartzCore.h>

...

    CALayer *layer = myView.layer;
    layer.shadowOpacity = .5;
    layer.shadowColor = [[UIColor blackColor] CGColor];
    layer.shadowOffset = CGSizeMake(0,0);
    layer.shadowRadius = 10;

哈,这个完美地解决了!我曾考虑过使用阴影,但我不确定如何让阴影围绕整个UIView。谢谢! - Padin215
仅在部分情况下对我有效。可能是因为我应用了透视变换 - 模糊的边缘仅适用于距离用户最近的点。 - Vyachaslav Gerchicov
如何在不使用阴影的情况下实现呢?我的意思是如果我想要图片本身淡化,而不是在其边缘使用任何颜色,我指的是由 uibezierpath 定义的边缘?谢谢。 - Reza.Ab

2

添加一个使用Swift版本的示例:

    btnSignIn.layer.cornerRadius = btnSignIn.frame.height * 0.5
    btnSignIn.layer.shadowColor = UIColor.darkGray.cgColor
    btnSignIn.layer.shadowRadius = 4.0
    btnSignIn.layer.shadowOpacity = 1.0
    btnSignIn.layer.shadowOffset = CGSize(width: 0, height: 0)

结果:

在此输入图片描述

请记住,如果您在IB编辑器中更改阴影设置,它将更改文本的阴影而不是视图的边框。

此外,您可以创建一个类并在IB Builder中设置它:

class UIRoundedWhiteButton: UIButton {

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    layer.cornerRadius = frame.height * 0.5
    layer.shadowColor = UIColor.darkGray.cgColor
    layer.shadowRadius = 4.0
    layer.shadowOpacity = 1.0
    layer.shadowOffset = CGSize(width: 0, height: 0)
}...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接