web-dev-qa-db-ja.com

コントロールセンターのようなiOS 7の動的なぼかし効果

IOS7のコントロールセンターに似たコントローラーを作成しようとしています。 WWDCセッション#226から、さまざまな効果でぼやけた画像を取得する方法を学びました

UIGraphicsBeginImageContextWithOptions(image.size, NULL, 0);

[view drawViewHierarchyInRect:rect];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

lightImage = [newImage applyLightEffect];

つまり、いくつかの画像をキャプチャ(スクリーンショットを作成)し、ぼかし効果を実行し、必要に応じてこのぼかし画像を使用します。

ただし、一部の動的コンテンツの上でコントロールセンターを開くと、コンテンツと同様にコントロールセンターの背景がぼやけていることがわかります。

誰もこの行動を再現する方法を知っていますか?

私がそれを見る唯一の方法は、コンテンツをキャプチャし、一定の間隔(たとえば、0.5秒)でぼかし効果を作成することです。しかし、冗長に見えます。

35
Nastya Gorban

ここに私が見つけた準備ができたソリューションがあります:

1。最も予期しないもの:UIToolBarを使用

- (id) initWithFrame:(CGRect)frame
{
    if ((self = [super initWithFrame:frame]))
    {
        [self setup];
    }
    return self;
}

- (id) initWithCoder:(NSCoder *)coder
{
    if ((self = [super initWithCoder:coder]))
    {
        [self setup];
    }
    return self;
}

- (void) setup
{
    if (iOS7OrLater)
    {
        self.opaque = NO;
        self.backgroundColor = [UIColor clearColor];

        UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:self.bounds];
        toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        toolbar.barTintColor = self.tintColor;
        [self insertSubview:toolbar atIndex:0];
    }
}

UIToolbarはこのニーズに使用できます。これは、彼の唯一の組み込みのぼかしメカニズムを備えているためです。このメカニズムは動的であり、優れています。しかし、悪いことは、何らかの理由で色を無視し、背景を永久に見た目にすることです...

Toolbar effect

更新:

色の破損を避けるために、barTintColorを使用しないでください。暗いスタイルのぼかしが必要な場合は、ツールバーのスタイルを変更することもできます(UIBarStyleBlackを使用)。

2。 FXBlurView

ツールバーとは異なり、より積極的ですが、動的なメカニズムはまだまれであり、実際には静的な背景にのみ使用できます。 (動的= NO)。

FBBlurView effect

43
Nastya Gorban

IOS8では、 IVisualEffect クラスを使用してビューにぼかし効果を実装できます。

12
petesalt

以下のコードを使用して、ビューにぼかし効果を適用できます。

UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

visualEffectView.frame = MYview.bounds;
[MYview addSubview:visualEffectView];
7
Muhammad Rizwan

LiveFrostは、ライブブラー用の優れた統合しやすいプロジェクトであることがわかりました。

https://github.com/radi/LiveFrost/

2
rounak

ストーリーボードからUIVisualEffectを使用できます。

ストーリーボード上でぼかし付きの視覚効果をドラッグします。背景色のアルファを設定することにより、目的の効果を得ることができます。サブビューは、視覚効果ビューのビューに追加する必要があり、バックグラウンドブラーの影響を受けません。

上記の[表示オプション]で[バイブランシー]効果を選択する必要があります。

画像をご覧ください:

1
Sahil Kapoor

ナビゲーションバーを使用してぼかしを提供することは、iOS 7を実行している古いデバイスでは機能しません。

0
Atif Khan