【问题标题】:Removing the border of uipopover controller in iOS在 iOS 中移除 uipopover 控制器的边框
【发布时间】:2013-01-28 09:46:33
【问题描述】:

我想创建一个带有白色边框的弹出框。我已经通过将子类的实例分配给 popoverBackgroundViewClass 来完成。我可以用白色(在背景上使用白色图像)来实现这一点,但不会删除弹出框的边框。白色边框仍然出现。有什么办法可以去掉吗?

【问题讨论】:

    标签: uipopovercontroller uipopover


    【解决方案1】:

    是的,有一个疯狂的解决方案)在你呈现Popover之后,你需要调用这个方法

    -(void)removeInnerShadow {
    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
    
    for (UIView *windowSubView in window.subviews) {
        if ([NSStringFromClass([windowSubView class]) isEqualToString:@"UIDimmingView"]) {
            for (UIView *dimmingViewSubviews in windowSubView.subviews) {
                for (UIView *popoverSubview in dimmingViewSubviews.subviews) {
                    if([NSStringFromClass([popoverSubview class]) isEqualToString:@"UIView"]) {
                        for (UIView *subviewA in popoverSubview.subviews) {
                            if ([NSStringFromClass([subviewA class]) isEqualToString:@"UILayoutContainerView"]) {
                                subviewA.layer.cornerRadius = 0;
                            }
    
                            for (UIView *subviewB in subviewA.subviews) {
                                if ([NSStringFromClass([subviewB class]) isEqualToString:@"UIImageView"] ) {
                                    [subviewB removeFromSuperview];
                                }
                                if ([NSStringFromClass([subviewB class]) isEqualToString:@"UILayoutContainerView"] ) {
                                    for (UIView *subviewC in subviewB.subviews) {
                                        if ([NSStringFromClass([subviewC class]) isEqualToString:@"UIImageView"]) {
                                            [subviewC removeFromSuperview];
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    }
    

    【讨论】:

      【解决方案2】:

      你可以试试这个库https://github.com/ddebin/DDPopoverBackgroundView

      UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:content];
      [popOver setPopoverBackgroundViewClass:[DDPopoverBackgroundView class]];
      

      设置一下

      [popOver.popoverBackgroundViewClass setContentInset:0.0f];
      

      就是这样。 但请记住,这只适用于 iOS 5+

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多