Удаление границы контроллера uipopover в iOS

Я хотел бы создать всплывающее окно с рамкой белого цвета. Я сделал это, назначив экземпляр подкласса popoverBackgroundViewClass. Я могу добиться этого с помощью белого цвета (используя белое изображение на заднем плане), но граница всплывающего окна не удаляется. По-прежнему появляется белая рамка. Есть ли способ удалить его?


person DilipKumar    schedule 28.01.2013    source источник


Ответы (2)


Да, есть одно сумасшедшее решение) После того, как вы представили 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];
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
}
person Philip J. Fry    schedule 15.02.2013

Вы можете попробовать эту библиотеку https://github.com/ddebin/DDPopoverBackgroundView.

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

просто установите

[popOver.popoverBackgroundViewClass setContentInset:0.0f];

Это оно. Но помните, что это будет работать только на iOS 5+.

person Kshitiz Ghimire    schedule 29.08.2013