【问题标题】:How add subview to UIView in Swift 4?如何在 Swift 4 中向 UIView 添加子视图?
【发布时间】:2017-09-28 11:37:54
【问题描述】:

如何在 Swift 4 中向 UIView 添加子视图?需要在 Swift 3 和 Swift 4 (iOS 10+) 中工作

@IBOutlet weak var viewBody: UIView!
@objc var loadIndicator = UIActivityIndicatorView()
@objc let loadBody = UIVisualEffectView(effect: UIBlurEffect(style: .dark))

@objc func activityLoad() {

    DispatchQueue.main.async() {

        self.loadIndicator.removeFromSuperview()
        self.loadBody.removeFromSuperview()

        self.loadBody.frame = CGRect(x: self.viewBody.frame.midX - 23, y: self.viewBody.frame.midY - 23, width: 46, height: 46)
        self.loadBody.layer.cornerRadius = 10
        self.loadBody.alpha = 1//0.7
        self.loadBody.layer.masksToBounds = true

        self.loadIndicator = UIActivityIndicatorView(activityIndicatorStyle: .white)
        self.loadIndicator.frame = CGRect(x: 0, y: 0, width: 46, height: 46)
        self.loadIndicator.startAnimating()

        self.loadBody.addSubview(self.loadIndicator)
        self.viewBody.addSubview(self.loadBody)

    }

}

错误:不要将子视图直接添加到视觉效果视图本身,而是将它们添加到-contentView。'

如果我添加 self.viewBody.contentView.addSubview(self.loadBody)

错误:UIView 类型的值没有成员 contentView。

我需要你的帮助。非常感谢。

【问题讨论】:

  • 编译器似乎认为viewBodyUIVisualEffectView 的一个实例。尝试清理项目。
  • viewBody 框架?
  • 显示loadBody的声明
  • @objc let loadBody = UIVisualEffectView(效果: UIBlurEffect(style: .dark))
  • UIVisualEffectView 有一个contentView 属性,你应该将子视图添加到这个contentView。所以只需将您的代码更改为self.loadBody.contentView.addSubview(self.loadIndicator)

标签: ios iphone swift xcode uiview


【解决方案1】:

UIVisualEffectView 有一个 contentView 属性,你应该给这个 contentView 添加子视图。所以只需将您的代码更改为 self.loadBody.contentView.addSubview(self.loadIndicator)。 – mrfour 20 分钟前

【讨论】:

    【解决方案2】:

    苹果这么说;

    根据所需的效果,效果可能会影响内容分层 添加到视觉效果视图的视图或内容的后面 内容视图。将视觉效果视图应用于现有视图,然后 应用 UIBlurEffect 或 UIVibrancyEffect 对象来应用模糊或 对现有视图的活力效果。添加视觉效果后 查看视图层次结构,将任何子视图添加到 contentView 视觉效果视图的属性。 不要直接添加子视图 视觉效果视图本身

    将您的子视图添加到视觉效果视图的内容视图中

     self.loadBody.contentView.addSubview(self.loadIndicator)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多