效果图如下所示:

swift: https://www.easck.com/Assuner-Lee/PopoverObjC
使用示例
pod 'PopoverObjC'
#import "ASViewController.h"
#import <PopoverObjC/ASPopover.h>
@interface ASViewController ()
@property (weak, nonatomic) IBOutlet UIButton *btn;
@property (nonatomic, strong) ASPopover *btnPopover;
@property (nonatomic, strong) ASPopover *itemPopover;
@end
@implementation ASViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"item" style:UIBarButtonItemStylePlain target:self action:@selector(clickItem:)];
}
- (void)didReceiveMemoryWarning {
}
初始化Popover
- (ASPopover *)btnPopover {
if (!_btnPopover) {
ASPopoverOption *option = [[ASPopoverOption alloc] init];
option.popoverType = ASPopoverTypeUp;
option.autoAjustDirection = NO;
option.arrowSize = CGSizeMake(9, 6);
option.blackOverlayColor = [UIColor clearColor];
option.popoverColor = [UIColor lightGrayColor];
option.dismissOnBlackOverlayTap = YES;
option.animationIn = 0.5;
//...
_btnPopover = [[ASPopover alloc] initWithOption:option];
}
return _btnPopover;
}
- (ASPopover *)itemPopover {
if (!_itemPopover) {
ASPopoverOption *option = [[ASPopoverOption alloc] init];
option.autoAjustDirection = NO;
option.arrowSize = CGSizeMake(10, 6);
option.blackOverlayColor = [UIColor clearColor];
option.sideEdge = 7;
option.dismissOnBlackOverlayTap = YES;
option.popoverColor = [[UIColor blackColor] colorWithAlphaComponent:0.7];
option.autoAjustDirection = YES;
option.animationIn = 0.4;
option.springDamping = 0.5;
option.initialSpringVelocity = 1;
option.overlayBlur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
//...
_itemPopover = [[ASPopover alloc] initWithOption:option];
}
return _itemPopover;
}
popover的属性可在option里设置。
弹出气泡
- (void)clickBtn:(id)sender {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width - 50, 40)];
[self.btnPopover show:view fromView:self.btn]; // in delegate window
}
- (void)clickItem:(id)sender {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)];
UIView *itemView = [self.navigationItem.rightBarButtonItem valueForKey:@"view"]; // you should use custom view in item;
if (itemView) {
// [self.itemPopover show:view fromView:itemView];
CGPoint originPoint = [self.itemPopover originArrowPointWithView:view fromView:itemView];
originPoint.y += 5;
[self.itemPopover show:view atPoint:originPoint];
}
}
@end
可在某一个视图或某一个point上弹出内容view










