3

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 のフレームも正しいです。

注: 鮮やかさをオフにすると、問題は解決します。

4

0 に答える 0