【问题标题】:UIView extension in SwiftSwift 中的 UIView 扩展
【发布时间】:2019-01-28 20:01:29
【问题描述】:

我在一个用 swift 编写的实用程序类中放置了一个 UIView extension
但是,当我尝试从扩展调用方法时,

编译器告诉我

该成员不存在

这是我的扩展:

extension UIView {
    func addShadow() {
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOffset = CGSize(width: 0, height: 0)
        layer.shadowOpacity = 0.5
        layer.shadowRadius = 5
        clipsToBounds = false
    }
}

由于UIImageUIView 的子类,我想我应该能够通过调用将方法应用于UIViewController 中的自定义MKAnnotation 图像

myImage.addShadow()

但是,我得到错误:

Value of type 'UIImage' has no member 'addShadow'

如果我将方法放在 UIImage 的扩展中,我会得到同样的错误。

我是否必须以某种方式告诉UIViewController 关于实用程序类或我的代码可能有什么问题?

【问题讨论】:

  • 我怀疑这是语法问题。您可能需要 UIImageVIEW,但错误提示为 UIImage。
  • 你是对的。 annotationview 有 imageView 还是它自己的 imageView

标签: ios swift uiimage swift-extensions


【解决方案1】:

您正在为UIView 进行扩展。不是UIImageView

extension UIImageView {

    func addShadow() {
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOffset = CGSize(width: 0, height: 0)
        layer.shadowOpacity = 0.5
        layer.shadowRadius = 5
        clipsToBounds = false
    }
}

另外请直接使用UIImageVIew,而不是UIImage

编辑

假设您的 cmets,我认为您正在尝试修改 MKAnnotationView。如果是这样,这里有一个可以帮助您的问题。

How to create rounded image with border and shadow as MKAnnotationView in Swift?

【讨论】:

  • 看来我可以将扩展中的方法应用到 UIView 到 annotationView 本身。但阴影是如此微妙,我几乎无法察觉。但这解释了错误。允许时将标记为正确。谢谢。
  • 好吧,如果我的答案接近解释,如果你能给我正确的答案复选标记,我将不胜感激,这有助于我继续,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2017-12-28
相关资源
最近更新 更多