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

请移步简单好用可任意定制的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及代码实现

水平有限,如有错误,请大家指出
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 5,261评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,264评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,787评论 4 61
  • 参考书目 《买买买时代的行为经济学》关键词:【优惠券】【失去和得到】【损失厌恶心理】 俗话说的好:女人好心情,三...
    萌小Q在路上阅读 5,924评论 8 8
  • 在我被阿卡丽深深伤害之后,我是拒绝玩上路的。 然而这场,ad,ap,sup,jg全部被预定了,我颤抖着选了个法洛士...
    夏梓Trista阅读 2,548评论 0 0

友情链接更多精彩内容