請(qǐng)移步簡(jiǎn)單好用可任意定制的iOS Popover氣泡
示例效果
示例效果.gif
在這里为居,我們簡(jiǎn)單實(shí)現(xiàn)了一個(gè)全黑的氣泡彈框矾克,每個(gè)選項(xiàng)包含了圖片、標(biāo)題捏鱼、內(nèi)容和下劃線执庐,并且可以滾動(dòng)視圖,選定某一項(xiàng)导梆。
或者
示例
示例
使用示例
pod 'LPDPopoverViewObject'
只需兩步--不需要關(guān)注彈出的方向和箭頭的位置
1. 初始化一個(gè)LPDPopoverViewObject對(duì)象
LPDPopoverViewObject *popoverViewObject = [[LPDPopoverViewObject alloc] initWithCellName:@"LPDTableViewCell" cellHeight:50 viewWidth:150 sourceObject:nil];
參數(shù)解釋?zhuān)?/h5>
(1) cellName
: popoverView中內(nèi)部tableView所需cell的類(lèi)名轨淌,該cell可以包含xib,也可以使用純代碼问潭,需符合LPDPopoverCellDelegate
協(xié)議猿诸,即實(shí)現(xiàn)- (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為一個(gè)簡(jiǎn)單封裝了三個(gè)NSString屬性的類(lèi)(例)址芯。
LPDTableViewCell.xib
LPDTableViewCell.xib
(2)
cellHight
: cell的高度灾茁。(3)
viewWidth
: popoverView寬度。(4)
sourceObject
: 決定了氣泡從哪一個(gè)視圖對(duì)象彈出谷炸,類(lèi)型為UIView或UIBarButtonItem北专,在初始化時(shí)可以先不設(shè)置。
設(shè)置一些屬性
popoverViewObject.showTarget = self; //showTarget必須為一個(gè)控制器
popoverViewObject.didSeletedDelegate = self; //可以為任意對(duì)象旬陡,可實(shí)現(xiàn)選中某個(gè)cell時(shí)的委托方法
popoverViewObject.viewHeight = 150; //設(shè)置popoverView高度(默認(rèn)為cell高度*cell數(shù)量拓颓,設(shè)置高度小于默認(rèn)高度時(shí)可滾動(dòng))
2. Show!!
// 可以每次彈出時(shí)改變sourceObject
[self.popoverViewObject showWithDataArray:self.dataArray sourceObject:self.navigationItem.rightBarButtonItem];
//若初始化時(shí)設(shè)置過(guò)sourceObject,不用改變sourceObject
[self.popoverViewObject showWithDataArray:self.dataArray];
注:示例中self為一個(gè)控制器描孟,popoverViewObject為其一個(gè)屬性驶睦。
參數(shù)解釋
dataArray
: cell所需的數(shù)據(jù)源,在cell的委托方法里實(shí)現(xiàn)如何處理單個(gè)模型即可匿醒。