iOS popover如何去除阴影

时间:2018-05-19 16:54:36

标签: ios objective-c uitabbarcontroller uipopovercontroller

每当我们显示popover时,邻居区域会显示不同类型的灰色,并且活动标签栏图标颜色会从蓝色变为灰色,直到弹出为止。

当弹出窗口被解除时,灰色阴影被移除

我想在弹出窗口可见时删除颜色

我用谷歌搜索但无论如何我似乎无法找到这种默认行为。

任何帮助我解决问题的帮助表示赞赏

由于

2 个答案:

答案 0 :(得分:4)

为实现此目的,您可以创建UIPopoverBackgroundView的自定义弹出窗口背景。 您可以找到以下用于创建自定义CustomPopoverBgView的代码。

<强> CustomPopoverBgView.h

#import <UIKit/UIKit.h>
    @interface CustomPopoverBgView : UIPopoverBackgroundView
{
    UIImageView *_borderImageView;
    UIImageView *_arrowView;
    CGFloat _arrowOffset;
    UIPopoverArrowDirection _arrowDirection;
}
@end

<强> CustomPopoverBgView.m

#import "CustomPopoverBgView.h"
#define CONTENT_INSET 10.0
#define CAP_INSET 25.0
#define ARROW_BASE 25.0
#define ARROW_HEIGHT 25.0
-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if(self){
        self.layer.shadowColor = [[UIColor clearColor] CGColor];
        _borderImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"popover-bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(CAP_INSET,CAP_INSET,CAP_INSET,CAP_INSET)]];

        _arrowView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];

        [self addSubview:_borderImageView];
        [self addSubview:_arrowView];
    }
    return self;
}
+(UIEdgeInsets)contentViewInsets{
    return UIEdgeInsetsMake(CONTENT_INSET, CONTENT_INSET, CONTENT_INSET, CONTENT_INSET);
}

+(CGFloat)arrowHeight{
    return ARROW_HEIGHT;
}

+(CGFloat)arrowBase{
    return ARROW_BASE;
}
- (CGFloat) arrowOffset {
    return _arrowOffset;
}

- (void) setArrowOffset:(CGFloat)arrowOffset {
    _arrowOffset = arrowOffset;
}
- (void)setArrowDirection:(UIPopoverArrowDirection)arrowDirection {
    _arrowDirection = arrowDirection;
}
- (UIPopoverArrowDirection)arrowDirection {
    return _arrowDirection;
}
@end

CustomPopoverBgView

中调用 UIPopoverController
 UIButton *btn = (UIButton *)sender;
 ViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"dddddd"];
 controller.view.backgroundColor = [UIColor redColor];
 UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:controller] ;

 popoverController.popoverBackgroundViewClass = [CustomPopoverBgView class];
[popoverController presentPopoverFromRect:btn.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:true];

希望这会对你有所帮助。

答案 1 :(得分:1)

创建您自己的自定义弹出窗口视图,并将其作为子视图添加到主视图之上,而不是Apple提供的默认视图。