虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > 简单好用可任意定制的iOS Popover气泡效果

简单好用可任意定制的iOS Popover气泡效果
类别:IOS编程/Objective-C   作者:码皇   来源:互联网   点击:

Popover(气泡弹出框 弹出式气泡 气泡)是由一个矩形和三角箭头组成的弹出窗口,箭头指向的地方通常是导致Popover弹出的控件或区域。本文通过实例代码给大家介绍了iOS Popover气泡效果,需要的朋友参考下吧

效果图如下所示:

 

swift: https://github.com/corin8823/Popover OC: https://github.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

    Popover interface#import <UIKit/UIKit.h>#import "ASPopoverOption.h"typedef void (^ASPopoverBlock)(void);
    @interface ASPopover : UIView@property (nonatomic, copy) ASPopoverBlock willShowHandler;
    @property (nonatomic, copy) ASPopoverBlock willDismissHandler;
    @property (nonatomic, copy) ASPopoverBlock didShowHandler;
    @property (nonatomic, copy) ASPopoverBlock didDismissHandler;
    @property (nonatomic, strong) ASPopoverOption *option;
    - (instancetype)initWithOption:(ASPopoverOption *)option;
    - (void)dismiss;
    - (void)show:(UIView *)contentView fromView:(UIView *)fromView;
    - (void)show:(UIView *)contentView fromView:(UIView *)fromView inView:(UIView *)inView;
    - (void)show:(UIView *)contentView atPoint:(CGPoint)point;
    - (void)show:(UIView *)contentView atPoint:(CGPoint)point inView:(UIView *)inView;
    - (CGPoint)originArrowPointWithView:(UIView *)contentView fromView:(UIView *)fromView;
    - (CGPoint)arrowPointWithView:(UIView *)contentView fromView:(UIView *)fromView inView:(UIView *)inView popoverType:(ASPopoverType)type;
    @end

contentView: 要显示的内容; fromView: 气泡从某一个视图上show; inview: 气泡绘制在某一个视图上,一般为delegate window; atPoint: 气泡从某一点上show; 可先获取originPoint, 偏移;

    PopoverOption Interfacetypedef NS_ENUM(NSInteger, ASPopoverType) {
    ASPopoverTypeUp = 0, ASPopoverTypeDown,}
    ;
    @interface ASPopoverOption : NSObject@property (nonatomic, assign) CGSize arrowSize;
    @property (nonatomic, assign) NSTimeInterval animationIn;
    // if 0, no animation@property (nonatomic, assign) NSTimeInterval animationOut;
    @property (nonatomic, assign) CGFloat cornerRadius;
    @property (nonatomic, assign) CGFloat sideEdge;
    @property (nonatomic, strong) UIColor *blackOverlayColor;
    @property (nonatomic, strong) UIBlurEffect *overlayBlur;
    @property (nonatomic, strong) UIColor *popoverColor;
    @property (nonatomic, assign) BOOL dismissOnBlackOverlayTap;
    @property (nonatomic, assign) BOOL showBlackOverlay;
    @property (nonatomic, assign) CGFloat springDamping;
    @property (nonatomic, assign) CGFloat initialSpringVelocity;
    @property (nonatomic, assign) ASPopoverType popoverType;
    @property (nonatomic, assign) BOOL highlightFromView;
    @property (nonatomic, assign) CGFloat highlightCornerRadius;
    @property (nonatomic, assign) BOOL autoAjustDirection;
    // down preferred, effect just in view not at point@end

总结

以上所述是小编给大家介绍的简单好用可任意定制的iOS Popover气泡效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家的支持!

您可能感兴趣的文章:

  • iOS开发中UIPopoverController的使用详解
  • IOS实现百度地图自定义大头针和气泡样式
相关热词搜索: ios popover 气泡