BLBubbleFilters
BLBubbleFilters 为你提供类似 Apple Music 的气泡过滤器。
灵感来源: SIFloatingCollection_Swift
规范
- SpriteKit
- iOS 9+
- tvOS 9+
使用方法
使用 BLBubbleFilters
的起点是 BLBubbleScene
类。我们首先初始化一个
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
BLBubbleScene *scene = [BLBubbleScene sceneWithSize:CGSizeMake(self.view.bounds.size.width / 2.0, self.view.bounds.size.height / 2.0)];
scene.backgroundColor = [UIColor whiteColor];
scene.bubbleDataSource = <#code#>;
scene.bubbleDelegate = <#code#>;
[(SKView *)self.view presentScene:scene];
}
注意事项:
- 我们强烈建议在
viewWillAppear:
中初始化一个BLBubbleScene
,以便正确调整为屏幕尺寸。 - 上面的例子假设你的视图控制器的
view
是一个SKView
。
场景数据源
您必须为BLBubbleScene
提供一个符合BLBubbleSceneDataSource
协议的数据源。它需要两个方法:
//provides the scene with the number of bubbles to present
- (NSInteger)numberOfBubblesInBubbleScene:(BLBubbleScene *)scene {
return <#code#>;
}
以及
- (id<BLBubbleModel>)bubbleScene:(BLBubbleScene *)scene
modelForBubbleAtIndex:(NSInteger)index
{
return <#code#>;
}
BLBubbleModel
协议提供了绘制气泡所需的一些视觉信息。
场景代理
如果您想在被选中时得到通知,可以设置场景的delegate
。
- (void)bubbleScene:(BLBubbleScene *)scene
didSelectBubble:(BLBubbleNode *)bubble
atIndex:(NSInteger)index
{
//a bubble has been tapped
}
示例
典型的BLBubbleFilters
实现可能如下所示
#import "ViewController.h"
#import <BLBubbleFilters/BLBubbleFilters.h>
#import "Bubble.h"
@interface ViewController () <BLBubbleSceneDataSource, BLBubbleSceneDelegate>
@property (nonatomic, strong) NSArray<Bubble *> *bubbles;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self setBubbles:@[[[Bubble alloc] initWithIndex:0],
[[Bubble alloc] initWithIndex:1],
[[Bubble alloc] initWithIndex:2],
[[Bubble alloc] initWithIndex:3]]];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
BLBubbleScene *scene = [BLBubbleScene sceneWithSize:self.view.bounds.size];
scene.backgroundColor = [UIColor whiteColor];
scene.bubbleDataSource = self;
scene.bubbleDelegate = self;
[(SKView *)self.view presentScene:scene];
}
#pragma mark Bubble Delegate
- (void)bubbleScene:(BLBubbleScene *)scene
didSelectBubble:(BLBubbleNode *)bubble
atIndex:(NSInteger)index
{
NSLog(@"Bubble Pressed! %@", bubble);
NSLog(@"The bubble is now on state %ld", (long)[bubble.model bubbleState]);
}
#pragma mark Bubble Data Source
- (NSInteger)numberOfBubblesInBubbleScene:(BLBubbleScene *)scene
{
return self.bubbles.count;
}
- (id<BLBubbleModel>)bubbleScene:(BLBubbleScene *)scene
modelForBubbleAtIndex:(NSInteger)index
{
return [self.bubbles objectAtIndex:index];
}
@end
注意:气泡数据模型的实现取决于您。 ;)
要求
- iOS 8+
- Obj-C
- SpriteKit
安装
Cocoapods
pod 'BLBubbleFilters', '~> 1.0'
然后在一些需要的地方使用#import <BLBubbleFilters/BLBubbleFilters.h>
。
Carthage
github "BellAppLab/BLBubbleFilters" ~> 1.0
然后在一些需要的地方使用#import <BLBubbleFilters/BLBubbleFilters.h>
。
Git Submodules
cd toYourProjectsFolder
git submodule add -b submodule --name BLBubbleFilters https://github.com/BellAppLab/BLBubbleFilters.git
然后,将 BLBubbleFilters
文件夹拖入您的 Xcode 项目中。
作者
Bell App Lab,邮箱:[email protected]
致谢
标志图片由 Jaohuarye 从 The Noun Project 提供版权。
许可证
BLBubbleFilters 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。