ios - 阴影不在 UIButtons 上绘制

标签 ios swift xcode swift4

我正在将一个 Swift 3 项目重构为 Swift 4,我遇到了这样一种情况:之前应用了阴影的按钮不再绘制阴影。

我正在使用这段代码来绘制阴影:

extension UIButton {  
  func drawShadow() {
    self.layer.drawsAsynchronously = true
    self.layer.masksToBounds = false
    self.layer.shadowColor = UIColor.black.cgColor
    self.layer.shadowOffset = CGSize.zero
    self.layer.shadowRadius = self.layer.cornerRadius
    self.layer.shadowOpacity = 0.5    
  }
}

我调用代码在 viewDidLayoutSubviews 中使用此代码绘制阴影:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    buttonArray = [self.buttonOne, self.buttonTwo, self.buttonThree, self.buttonFour]
    buttonArray.forEach { button in
      button.subviews.filter{$0 is UIImageView}.forEach({ imageView in
        imageView.contentMode = .scaleAspectFit
      })
      button.clipsToBounds = false
      button.drawShadow()
    }
}

我尝试在其他地方添加 viewDidLayoutSubviews 中的代码,看看是否可以绘制它。我尝试过 viewDidLoadviewWillLayoutSubviewsviewDidAppear 等。我尝试通过布置再次按下按钮,清除派生数据,从终端和 Xcode 中对模拟器进行核对。

按钮包含在 UIStackView 中。我有两个水平堆栈 View ,其中包含两个嵌入垂直堆栈 View 中的按钮。如果有人有任何建议:还有什么可以尝试的,我欢迎您提出建议。感谢您的阅读。

最佳答案

请尝试这段代码,我已经更改了 shadowOffset

func drawShadow() {
    self.layer.drawsAsynchronously = true
    self.layer.masksToBounds = false
    self.layer.shadowColor = UIColor.black.cgColor
    self.layer.shadowOffset = CGSize(width: 1.0, height: 2.0)
    self.layer.shadowRadius = self.layer.cornerRadius
    self.layer.shadowOpacity = 0.5    
  }

关于ios - 阴影不在 UIButtons 上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561612/

相关文章:

objective-c - 拖动以触发 UIButton

swift - 类型 'Any' 没有下标成员

c++ - 命令行应用程序的自定义 URL 方案

ios - 反向地理编码是否需要蜂窝/wifi?

ios - iPad 应用程序必须支持横向和纵向吗?

iphone - 使用核心数据和 ARC 进行简单的内存管理

iOS 编程将 Storyboard 转换为 NIB

swift - 如何实现 uisearchcontroller 通过 post 请求从服务器端检索数据

swift - 如何使用带属性字符串的系统字体?

objective-c - 我怎样才能关闭 UIView