【问题标题】:UIView with blurred borderUIView 边框模糊
【发布时间】:2012-09-10 15:08:36
【问题描述】:

有没有办法模糊/淡出 UIView 的边框?

到目前为止,我在核心图形方面几乎没有做任何事情。

【问题讨论】:

  • 还没有做任何事情。我希望图书馆已经有办法做到这一点,类似于做圆角。如果我需要对核心图形进行自定义工作,那么效果不值得现在花时间学习它。
  • 你读过UIView Class Reference了吗?
  • 没有内置的方法可以做到这一点。您可以通过使用不太难的渐变渐变 CALayer 进行遮罩来渐变。模糊是一个非常不同的问题。

标签: objective-c ios core-graphics


【解决方案1】:

您可以尝试将 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。谢谢!
  • 仅对我部分有效。也许是因为我应用了透视变换 - 模糊的边界仅适用于离用户最近的点
  • 如何在不使用阴影的情况下做到这一点?我的意思是,如果我想让图像本身褪色怎么办?并且不在其边缘使用任何颜色,我的意思是由uibezierpath定义的边缘?谢谢。
【解决方案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)
}...

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 2011-01-19
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2018-01-21
    • 2015-01-07
    • 1970-01-01
    相关资源
    最近更新 更多