我正在使用具有开箱即用UISplitViewController
和Master
视图控制器的股票Detail
。在故事板中,我在UIImageView
控制器集中添加了Detail
,以使用单个图像有效地填充视图。
在Master
控制器中,我使用以下内容模糊了该控制器的背景:
// 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
控制器出现在Detail
控制器上方时,请注意Master
控制器边缘内边缘周围是否有阴影。
如何删除这些“阴影”以改为呈现均匀模糊?
在IB中调试视图层次结构会显示一个名为_UIPopoverSlidingChromeView
的(私有?)视图。它有一个嵌入的灰色框架,它肯定是造成非均匀模糊外观的原因。
完全禁用模糊视图,只需离开self.tableview.backgroundColor = [UIColor clearColor]
即可显示_UIPopoverSlidingChromeView
的灰框。它看起来像这样:
有关使用_UIPopoverSlidingChromeView
时如何避免UISplitViewController
的任何想法?
答案 0 :(得分:3)
//как убрать дурацкий прямоугольник при прозрачном фоне maser окна в режиме UISplitViewControllerDisplayModeOverlay
CALayer* v_1 = self.view.superview.superview.superview.layer.sublayers[0];
CALayer* v_2=v_1.sublayers[0];
v_2.borderWidth=0;
答案 1 :(得分:1)
问题在于它是一个你无法测试的私人课程。
幸运的是_UIPopoverSlidingChromeView
是公共的UIPopoverBackgroundView
的子类(因为在常规popover实现中,流客户端可以通过提供子类UIPopoverBackgroundView
的类来自定义popover背景chrome)
for (UIView *subview in self.viewController.view.superview.superview.subviews) {
if ([subview isKindOfClass:[UIPopoverBackgroundView class]]) {
subview.alpha = 0.0;
}
}
这应隐藏_UIPopoverSlidingChromeView
。