私は SpriteKit ゲームを書いていますが、SKView にあるぼやけたビューの問題に直面しました。ゲームが一時停止されたときに右からスライドし、iOS 7 のコントロール センター パネルのように親ビュー (SKView) のコンテンツをぼかす必要があります。望ましい外観は次のとおりです。
私が実際に得るものは次のとおりです。
実際、左側のビューは完全な黒ではありません。スーパービューのハイライトがほとんど不透明なサブビューでわずかに苦労している様子がわかりますが、ぼかしは適用されていません。iOS 8 のバグ/機能ですか、それとも私の間違い/誤解ですか?
これが私の UIVisualEffectView サブクラスのエッセンシャルです:
class OptionsView: UIVisualEffectView {
//...
init(size: CGSize) {
buttons = [UIButton]()
super.init(effect: UIBlurEffect(style: .Dark))
frame = CGRectMake(-size.width, 0, size.width, size.height)
addButtons()
clipsToBounds = true
}
func show() {
UIView.animateWithDuration(0.3, animations: {
self.frame.origin.x = 0
})
}
func hide() {
UIView.animateWithDuration(0.3, animations: {
self.frame.origin.x = -self.frame.size.width
})
}
次に GameScene クラスで:
初期化子で:
optionsView = OptionsView(size: CGSizeMake(130, size.height))
didMoveToView(ビュー:SKView)で:
view.addSubview(optionsView)
一時停止ボタンを押したとき:
self.optionsView.show()
PS私はぼかしビューを実装する別の2つの方法を知っていますが、私のアプリはiOS8のみをサポートする予定なので、これが最も簡単だと思いました
スーパービューからぼやけた静止画像をレンダリングします - > clipsToBounds = trueでUIImageViewをOptionsViewに配置します - > optionsViewの位置をアニメーション化しながらUIImageViewの位置をアニメーション化して、ぼかしがスーパービューに対して相対的に静止するようにします
UIView、UIVisualEffectView、UIBlurView を忘れて、SKEffectNode を SKCropNode と一緒に使用します。