iOS Objective-C Popover简单圆角阴影气泡实现

QPopover

介绍

QPopover, iOS圆角阴影气泡控件,支持圆角阴影、箭头只支持上下方向,只需提供一张箭头向上的箭头图片

示例效果

输入图片说明

安装教程

  1. 首先从gitee下载QPopover项目源码:https://gitee.com/fireice2048/qpopover
  2. 将 QPopoverViewController.h / QPopoverViewController.m 复制到目标项目中
  3. 再将QPopover项目中 popover_arrow_icon@3x.png 图片添加到目标项目中
  4. 然后按以下使用说明编写代码即可

使用说明

#import "QPopoverViewController.h"

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // Do any additional setup after loading the view.
    UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(40, 180, 100, 30)];
    button.backgroundColor = [UIColor greenColor];
    [button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];
    [self.view addSubview:button];
}

- (void)buttonClick:(UIView *)sender
{
    // 创建自定义ContentView,放置自己的业务UI元素,正确设置宽度和高度(注意预留阴影大小,默认左右均为30像素),Popover会自适应其大小
    UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 120)];
    view.backgroundColor = [UIColor orangeColor];
    
    QPopoverViewController * popover = [[QPopoverViewController alloc] init];
    popover.userContentView = view;
    popover.anchorView = sender; // 设置锚点视图,尖角箭头将居中对准该视图,可以通过 borderEdgeInsets 进行微调
    
    UIImage * image = [UIImage imageNamed:@"popover_arrow_icon"];
    popover.arrowImage = image; // 设置尖角箭头图片
    
    [self presentViewController:popover animated:YES completion:nil];
}

  1. 可以修改阴影的参数:
    popover.borderContentView.layer.cornerRadius = 8;
    popover.borderContentView.layer.shadowColor = [[UIColor blackColor] colorWithAlphaComponent:0.5].CGColor;
    popover.borderContentView.layer.shadowOffset = CGSizeMake(0, 3);
    popover.borderContentView.layer.shadowOpacity = 0.8;//阴影透明度,默认0
    popover.borderContentView.layer.shadowRadius = 20;

  1. 也可以修改圆角边框视图的背景颜色
popover.borderContentView.backgroundColor = [[UIColor greenColor] colorWithAlphaComponent:0.4];

当修改了圆角边框背景颜色时,应该将尖角箭头图片替换为相适应的图片

    popover.arrowImage = [UIImage imageNamed:@"xxx"];;
  1. 可以修改圆角边框的四周Border大小
popover.borderEdgeInsets = UIEdgeInsetsMake(16, 16, 16, 16);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,659评论 1 180
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,606评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,273评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 4,811评论 3 11
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,882评论 2 7