BLBubbleFilters 1.0.1

BLBubbleFilters 1.0.1

测试已测试
语言 Obj-CObjective C
许可 MIT
发布最后发布2018年10月

Bell App Lab 维护。




BLBubbleFilters Version License

Platforms CocoaPods Compatible Carthage compatible Twitter

BLBubbleFilters

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];
}

注意事项:

  1. 我们强烈建议在 viewWillAppear: 中初始化一个 BLBubbleScene,以便正确调整为屏幕尺寸。
  2. 上面的例子假设你的视图控制器的 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]

致谢

标志图片由 JaohuaryeThe Noun Project 提供版权。

许可证

BLBubbleFilters 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。