UIView
効果として aを持つUIVisualEffectView
サブビューで aを作成しようとしてUIBlurEffect
います。ビューは画面の端から作成され、アニメーションを使用してスライドされます。
シミュレーターではすべて正常に動作しますが (iPhone 4S と iPhone 6 でテストしました)、私の携帯電話 (iPhone 6) ではぼかしはぼやけておらず、alpha
0.5 の暗い灰色のように見えます。さらに、デバイスのスクリーンショットを撮ったり、ホーム画面から開いたりすると、一貫性のあるレンダリングが再開される前に、その 1 つのフレームに対してブラーがレンダリングされます。
現時点でのビューのスクリーンショットを次に示します。
ただし、デバイスではぼかしはありません。本質的には、暗くて透明なビューです。
ビューを初期化するために使用するコードは次のとおりです。blurView
およびvibrancyView
プロパティはグローバル変数として宣言されています。
init(left: Bool){
self.left = left
let screenSize = UIScreen.mainScreen().bounds.size
var rect: CGRect
if left{
rect = CGRectMake(-screenSize.width*0.3, 0, screenSize.width*0.3, screenSize.height)
}else{
rect = CGRectMake(screenSize.width, 0, screenSize.width*0.3, screenSize.height)
}
super.init(frame: rect)
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
blurView = UIVisualEffectView(effect: blurEffect)
blurView.frame = CGRectMake(0, 0, self.frame.width, self.frame.height)
self.addSubview(blurView)
let vibrancy = UIVibrancyEffect(forBlurEffect: blurEffect)
vibrancyView = UIVisualEffectView(effect: vibrancy)
vibrancyView.frame = blurView.frame
blurView.addSubview(vibrancyView)
self.userInteractionEnabled = true
}
そして、blurView を含む superView を次の場所に移動します。
func moveIn(){
UIView.animateWithDuration(0.3, animations: { () -> Void in
var center = self.center
if self.left{
center.x = UIScreen.mainScreen().bounds.size.width*0.15
}else{
center.x = UIScreen.mainScreen().bounds.size.width*0.85
}
self.center = center
})
}
前に言ったように、アニメーションなどは正常に機能しますが、blurView はぼやけません。
これで何が起こっているのかわかりません。フレームのレンダリングに関係していると思いますが、私は教祖ではないので、誰かアイデアがあれば感謝します.