ios - 在 UISplitView 的主视图中实现统一的 UIBlurEffect

标签 ios ios9 uisplitviewcontroller uisplitview uiblureffect

我正在使用带有开箱即用的 MasterDetail View Controller 的库存 UISplitViewController。在 Storyboard中,我向 Detail Controller 集添加了一个 UIImageView 以有效地用单个图像填充 View 。

Master Controller 中,我使用了以下内容来模糊该 Controller 的背景:

// In viewDidLoad

self.tableView.backgroundColor = [UIColor clearColor];
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
    UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc]
                                            initWithEffect:blurEffect];
    self.tableView.backgroundView = visualEffectView;
    self.tableView.separatorEffect = [UIVibrancyEffect effectForBlurEffect:blurEffect];

Master Controller 出现在 Detail Controller 上方时,请注意 Master Controller 的边缘在内部边缘周围有一个黑色阴影.

如何去除这些“阴影”以呈现统一的模糊效果?

Split View Controller

更多详情

UIPopoverSlidingChromeView

调试 IB 中的 View 层次结构会显示一个名为 _UIPopoverSlidingChromeView 的(私有(private)?) View 。它有一个嵌入的灰色框架,这绝对是造成不均匀模糊外观的原因。

完全禁用模糊 View ,只保留 self.tableview.backgroundColor = [UIColor clearColor] 显示 _UIPopoverSlidingChromeView 的灰框。它看起来像这样:

Rendered UIPopoverSlidingChromeView

关于在使用 UISplitViewController 时如何避免 _UIPopoverSlidingChromeView 有什么想法吗?

最佳答案

    //как убрать дурацкий прямоугольник при прозрачном фоне maser окна в режиме UISplitViewControllerDisplayModeOverlay
    CALayer* v_1 =  self.view.superview.superview.superview.layer.sublayers[0];
    CALayer* v_2=v_1.sublayers[0];
    v_2.borderWidth=0;

关于ios - 在 UISplitView 的主视图中实现统一的 UIBlurEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164982/

相关文章:

ios - Firebase FCM 关于 IOS 10 的说明

swift - 不允许此应用查询方案 XYZ ://

objective-c - UISplitViewController 以编程方式没有 nib/xib

ios - 第二个主从方案在 SplitViewController 中无法正确加载

ios - 将 segue 添加到分割 View Controller

ios - 初始化时阻止 UICollectionView 加载

ios - 如果在初始化程序中创建对象会立即释放,但如果在方法中创建则不会

ios - 调试 iOS 应用程序时 Web Inspector 中的 WebSQL 数据库文件夹在哪里

css - 当父容器设置为特定高度时,Flexbox 元素在 iOS 9 上缩小

ios - ScrollView 和内容 View 不会在不同 View 中自动调整大小