我有一个我在Xcode的界面构建器中创建的xib。在xib内部是一个带有活力的UIVisualEffectView。如果我以任何身份向UIVisualEffectView添加子视图(在界面构建器中或以编程方式在下面的代码中看到),那么子视图是充满活力的(因为它应该是)但是UIVisualEffectView无处可见。< / p>
因此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加运行iOS8。在模拟器中,我既看不到子视图,也看不到UIVisualEffectView。
以下是我如何实例化nib的视图。
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的框架也是正确的。
注意:关闭活力可以解决问题。