【发布时间】: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。
我需要你的帮助。非常感谢。
【问题讨论】:
-
编译器似乎认为
viewBody是UIVisualEffectView的一个实例。尝试清理项目。 -
viewBody 框架?
-
显示
loadBody的声明 -
@objc let loadBody = UIVisualEffectView(效果: UIBlurEffect(style: .dark))
-
UIVisualEffectView 有一个
contentView属性,你应该将子视图添加到这个contentView。所以只需将您的代码更改为self.loadBody.contentView.addSubview(self.loadIndicator)。
标签: ios iphone swift xcode uiview