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)
}
}
編集:注、私はデバイスでテストしています。iOS8 を実行している iPhone 6 プラス。シミュレーターでは、サブビューも 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 のフレームも正しいです。
注: 鮮やかさをオフにすると、問題は解決します。