29

プロトタイプセルがあり、UIVisualEffectViewその中に a を入れましたContentView。Visual Effect View の Blur Style は Dark で Vibrancy はオフです。次に、IB を使用して Visual Effect ビューのアルファを 0.5 に設定します。

次に、実行時に、次のような警告が表示されます。

<UIVisualEffectView ...> is being asked to animate its opacity. This will cause the effect to appear broken until opacity returns to 1.

この警告が表示される理由と、このアルファ プロパティを適切に設定する方法を理解できませんでした。

4

7 に答える 7

14

問題は、何をアニメーション化するかです。alphaそれが効果の場合、プロパティを介してアニメーション化することはできません。しかしiOS 9からはアニメーションブロックにエフェクトを設定することでアニメーション化できるようになりました。

UIVisualEffectView* view = [[UIVisualEffectView alloc] initWithFrame:self.view.bounds];
view.effect = nil;
[UIView animateWithDuration:0.3 animations:^{
    view.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
}];

または、他の回答で提案されているように、ラッパービューのアルファをアニメーション化することで効果をアニメーション化できます (iOS 8 でも機能します)。

視覚効果ビュー (サブビュー) のコンテンツをアニメーション化する場合は、contentView代わりにプロパティをアニメーション化します (効果ビューのサブビューを追加するために使用する必要があります)。

[UIView animateWithDuration:0.3 animations:^{
    view.contentView.alpha = 1.0;
}];

要約すると、UIVisualEffectView 自体のアルファを変更する必要はありません。これは、必要なものではない可能性が高いためです。

于 2015-12-15T13:55:24.510 に答える
12

私が覚えている限りでは、視覚効果ビューのアルファを変更することはできません。アルファは常に 1 でなければなりません。

于 2014-10-15T12:02:27.193 に答える
8

目的の効果は、視覚効果ビューではなく背景色のアルファを設定することで実現できます。サブビューは、視覚効果ビューのビューに追加する必要があり、背景のぼかしの影響を受けません。

Vibrancyエフェクトは、上記の View Effect View オプションで選択する必要があります。

画像を参照してください:

ここに画像の説明を入力

于 2014-11-25T10:24:23.567 に答える
5

user1179321 間違いなく正しい。UIVisualEffectView ドキ​​ュメントによると;

UIVisualEffectView クラスを使用する場合、1 未満のアルファ値は避けてください。部分的に透明なビューを作成すると、システムはオフスクリーン レンダー パス中にビューと関連するすべてのサブビューを結合します。UIVisualEffectView オブジェクトは、正しく表示するために、上に重ねるコンテンツの一部として組み合わせる必要があります。視覚効果ビューまたはそのいずれかのスーパービューでアルファを 1 未満に設定すると、多くの効果が正しく表示されなかったり、まったく表示されなかったりします。

https://developer.apple.com/library/ios/documentation/uikit/reference/UIVisualEffectView/index.html

于 2014-10-24T13:12:13.997 に答える
1

私の解決策:

  1. 視覚効果ビューの背後にあるレイヤーを複製します。(私の場合はUIImageView)
  2. 複製されたビューのアルファ値をアニメーション化します。(例: アルファ フォーム 1 から 0、ぼやけた画像を表示)
于 2015-07-27T19:38:05.387 に答える