UITableViewController (UINavigationController のルート) を作成し、これを別のビュー コントローラーの上にモーダルで表示しています。ビューが読み込まれ、viewDidAppear が呼び出されると、視覚効果が良く見えるように、ある程度機能しています。しかし、viewDidAppear の直後に視覚効果がなくなり、テーブルビューの背景が白くなります。
提示された UITableViewController で、これを viewDidLoad に追加しました。
if (NSClassFromString(@"UIVisualEffectView") && !UIAccessibilityIsReduceTransparencyEnabled()) {
self.tableView.backgroundColor = [UIColor clearColor];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
[blurEffectView setFrame:self.tableView.frame];
self.blurView = blurEffectView;
self.tableView.backgroundView = self.blurView;
}
セルの背景が明確になるように、これも実装します。
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if (NSClassFromString(@"UIVisualEffectView") ) {
cell.backgroundColor = [UIColor clearColor];
}
}
私もcell.backgroundColor = [UIColor clearColor]
tableViewに設定しましcellForRowAtIndexPath:
たが、それも役に立ちません。
繰り返しますが、ビューが読み込まれると正しい効果が得られますが、画面に表示されるとすぐに背景のぼかしが失われます。何がうまくいかないのでしょうか?また、ビュー コントローラーで blueEffectView をプロパティとして保持しようとしましたが、うまくいきませんでした