美文网首页iOS高阶UI相关iOS开发iOS技术资料
【弃】快速实现任意定制气泡弹窗--LPDPopoverObjec

【弃】快速实现任意定制气泡弹窗--LPDPopoverObjec

作者: Assuner | 来源:发表于2017-08-05 20:33 被阅读211次

    请移步简单好用可任意定制的iOS Popover气泡

    示例效果

    示例效果.gif

    在这里,我们简单实现了一个全黑的气泡弹框,每个选项包含了图片、标题、内容和下划线,并且可以滚动视图,选定某一项。

    或者

    示例
    示例

    使用示例

    pod 'LPDPopoverViewObject'
    

    只需两步--不需要关注弹出的方向和箭头的位置

    1. 初始化一个LPDPopoverViewObject对象

    LPDPopoverViewObject *popoverViewObject = [[LPDPopoverViewObject alloc] initWithCellName:@"LPDTableViewCell" cellHeight:50 viewWidth:150 sourceObject:nil];
    
    参数解释:

    (1) cellName: popoverView中内部tableView所需cell的类名,该cell可以包含xib,也可以使用纯代码,需符合LPDPopoverCellDelegate协议,即实现- (void)setViewModel:(id)viewModel;方法。注:该cell决定了popoverView的样式,可以任意定制。如 示例中的LPDTableViewCell:

    LPDTableViewCell.h
    #import <UIKit/UIKit.h>
    #import "LPDPopoverCellProtocol.h"
    
    @interface LPDTableViewCell : UITableViewCell <LPDPopoverCellDelegate>
    
    @property (weak, nonatomic) IBOutlet UIImageView *logo;
    @property (weak, nonatomic) IBOutlet UILabel *title;
    @property (weak, nonatomic) IBOutlet UILabel *content;
    @end
    
    
    LPDTableViewCell.m
    #import "LPDTableViewCell.h"
    #import "LPDViewModel.h"
    
    @implementation LPDTableViewCell
    
    - (void)awakeFromNib {
      [super awakeFromNib];
      self.contentView.backgroundColor = [UIColor blackColor];
      self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame];
      self.selectedBackgroundView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7];
    }
    
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
    }
    
    - (void)setViewModel:(LPDViewModel *)model {
      self.logo.image = [UIImage imageNamed:model.logo];
      self.title.text = model.title;
      self.content.text = model.content;
    }
    
    @end
    

    注:LPDViewModel为一个简单封装了三个NSString属性的类(例)。

    LPDTableViewCell.xib
    LPDTableViewCell.xib
    (2)cellHight: cell的高度。
    (3)viewWidth: popoverView宽度。
    (4)sourceObject: 决定了气泡从哪一个视图对象弹出,类型为UIView或UIBarButtonItem,在初始化时可以先不设置。
    设置一些属性
    popoverViewObject.showTarget = self;  //showTarget必须为一个控制器
    popoverViewObject.didSeletedDelegate = self;  //可以为任意对象,可实现选中某个cell时的委托方法
    popoverViewObject.viewHeight = 150; //设置popoverView高度(默认为cell高度*cell数量,设置高度小于默认高度时可滚动)
    

    2. Show!!

    //  可以每次弹出时改变sourceObject
    [self.popoverViewObject showWithDataArray:self.dataArray sourceObject:self.navigationItem.rightBarButtonItem];
    
    //若初始化时设置过sourceObject,不用改变sourceObject
    [self.popoverViewObject showWithDataArray:self.dataArray];
    

    注:示例中self为一个控制器,popoverViewObject为其一个属性。

    参数解释

    dataArray: cell所需的数据源,在cell的委托方法里实现如何处理单个模型即可。

    谢谢观看

    完整demo及代码实现

    水平有限,如有错误,请大家指出

    相关文章

      网友评论

        本文标题:【弃】快速实现任意定制气泡弹窗--LPDPopoverObjec

        本文链接:https://www.haomeiwen.com/subject/yrlwlxtx.html