我有一个在 Xcode 的界面生成器中创建的 xib。在 xib 内部是一个带有活力的 UIVisualEffectView。如果我以任何身份向 UIVisualEffectView 添加子视图(在界面构建器中或以编程方式,如您在下面的代码中所见),那么子视图是充满活力的(应该如此)但是 UIVisualEffectView 无处可见。
所以 UIVisualEffectView 的子视图是屏幕上唯一可见的元素,而 UIVisualEffectView 本身是缺失的。
在添加任何子视图之前,UIVisualEffectView 在屏幕上显示得非常好。
我怎样才能解决这个问题?
import UIKit
class EmptyContentView: UIView {
@IBOutlet var visualEffectView: UIVisualEffectView!
override func awakeFromNib() {
var vibrantLabel = UILabel()
vibrantLabel.text = "Vibrant"
vibrantLabel.sizeToFit()
vibrantLabel.center = self.center
self.visualEffectView.contentView.addSubview(vibrantLabel)
}
}
编辑:注意,我正在设备上进行测试。iPhone 6 plus 运行 iOS8。在模拟器中,我既看不到子视图也看不到 UIVisualEffectView。
这是我如何实例化笔尖的视图。
var nibViews = NSBundle.mainBundle().loadNibNamed("EmptyContentView", owner: self, options: nil)
let emptyContentView = nibViews[0] as! EmptyContentView
emptyContentView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: self.tableView.frame.size.height)
self.tableView.addSubview(emptyContentView)
UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: { self.tableView.alpha = 1 }, completion: nil)
顺便说一句,是否为 tableView 设置动画并没有什么不同。emptyContentView 的框架也是正确的。
注意:关闭活力确实可以解决问题。