BeeFramework

来源:互联网 发布:mac怎样安装python 编辑:程序博客网 时间:2024/06/02 16:11

现在进行Bee的学习,随手做下笔记。

whatsbug作者博客http://www.whatsbug.com,在github中下载源码和sdk,安装sdk后新建一个空项目.运行源码中的WhatsBugs就是框架的示例代码。

这里我对Lession1的过程记录下来。

1.方便后面的练习分开,我建立如下路径.后续的练习复制01文件夹改为02就可以在原项目的基础上进行修改代码。

BeeFramework/01/BeeExp/BeeExp.xcodeproj

 

2.在iPhone/View创建分类的表格视图 CatelogBoard, 并修改代码

 

 

#import "Bee.h"#import "Bee_UITableBoard.h"#pragma mark -@interface CatelogCell : BeeUIGridCell{    BeeUILabel* _title;    BeeUILabel* _intro;}@end@interface CatelogBoard : BeeUITableBoard{    NSMutableArray* _lessions;}@end
CatelogBoard.m
#import "CatelogBoard.h"#import "Bee_Debug.h"#import "Bee_Runtime.h"#pragma mark -@implementation CatelogCell+ (CGSize)sizeInBound:(CGSize)bound forData:(NSObject *)data{    return CGSizeMake( bound.width,  60.0f);}-(void)layoutInBound:(CGSize)bound forCell:(BeeUIGridCell *)cell{    _title.frame = CGRectMake( 10.0f, 5.0f, cell.bounds.size.width - 20.0f, 30.0f);    _intro.frame = CGRectMake( 10.0f, 32.0f, cell.bounds.size.width - 20.0f, 20.0f);}-(void)load{    [super load];        _title = [[BeeUILabel alloc] init];    _title.font = [UIFont boldSystemFontOfSize:18.0f];    _title.textColor = [UIColor blackColor];    _title.textAlignment = UITextAlignmentLeft;    [self addSubview:_title];        _intro = [[BeeUILabel alloc] init];    _intro.font = [UIFont systemFontOfSize:14.0f];    _intro.textColor = [UIColor blackColor];    _intro.textAlignment = UITextAlignmentCenter;    [self addSubview:_intro];}-(void)unload{    SAFE_RELEASE_SUBVIEW( _title );    SAFE_RELEASE_SUBVIEW( _intro );    //never to forget }-(void)dataWillChange{    [super dataWillChange];}-(void)dataDidChanged{    [super dataDidChanged];        if( self.cellData)    {        [_title setText:[(NSArray *)self.cellData objectAtIndex:1]];        [_intro setText:[(NSArray *)self.cellData objectAtIndex:2]];    }    else    {        [_title setText:nil];        [_intro setText:nil];    }}@end#pragma mark -@implementation CatelogBoard- (void)load{    [super load];        _lessons = [[NSMutableArray alloc] init];        [_lessons addObject:[NSArray arrayWithObjects:@"Lesson12Board", @"Lesson12 (New)", @"How to coding BeeUILayout", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson13Board", @"Lesson13 (New)", @"How to write BeeUILayout XML", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson14Board", @"Lesson14 (New)", @"How to use BeeUIQuery", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"DribbbleBoard", @"Dribbble.com (New)", @"Demo for dribbble.com", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"WebViewBoard", @"WebView Demo (New)", @"Demo for BeeUIWebView", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson1Board", @"Lesson 1", @"How to use BeeUIBoard", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson2Board", @"Lesson 2", @"How to use BeeUISignal", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson3Board", @"Lesson 3", @"How to use BeeUIStack", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson4Board", @"Lesson 4", @"How to use BeeUIStackGroup", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson5Board", @"Lesson 5", @"How to use BeeUITableBoard", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson6Board", @"Lesson 6", @"How to use BeeUIFlowBoard", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson7Board", @"Lesson 7 (New)", @"How to use Bee controls", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson8Board", @"Lesson 8 (New)", @"How to use BeeNetwork", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson9Board", @"Lesson 9 (New)", @"How to use BeeController", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson10Board", @"Lesson 10 (New)", @"How to use BeeModel & BeeCache", nil]];    [_lessons addObject:[NSArray arrayWithObjects:@"Lesson11Board", @"Lesson 11 (New)", @"How to use BeeActiveRecord", nil]];}- (void)unload{    [_lessons removeAllObjects];    [_lessons release];        [super unload];}#pragma mark Signal- (void)handleUISignal_BeeUIBoard:(BeeUISignal *)signal{    [super handleUISignal:signal];        if ( [signal is:BeeUIBoard.CREATE_VIEWS] )    {        self.view.backgroundColor = [UIColor whiteColor];        //self.view.hintString = @"CatalogBoard";        [self showNavigationBarAnimated:NO];        [self setTitleString:@"CatalogBoard"];    }    else if ( [signal is:BeeUIBoard.DELETE_VIEWS] )    {    }}-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    CGSize bound = CGSizeMake( self.view.bounds.size.width, 0.0f);    return [CatelogCell sizeInBound:bound forData:nil].height;    }-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return [_lessons count];}-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    BeeUITableViewCell* cell = (BeeUITableViewCell *)[self dequeueWithContentClass:[CatelogCell class]];    if( cell )    {        if( indexPath.row %2)        {            [cell.gridCell setBackgroundColor:[UIColor whiteColor]];        }        else        {            [cell.gridCell setBackgroundColor:[UIColor colorWithWhite:0.95f alpha:1.0]];        }            [cell setSelectionStyle:UITableViewCellSelectionStyleGray];        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];            cell.cellData = [_lessons objectAtIndex:indexPath.row];        return cell;    }    return [super tableView:tableView cellForRowAtIndexPath:indexPath];}-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    [super tableView:tableView didSelectRowAtIndexPath:indexPath];        //BeeLog(@"select");    NSArray* data = [_lessons objectAtIndex:indexPath.row];    BeeUIBoard* board = [[(BeeUIBoard *)[BeeRuntime allocByClassName:(NSString*)[data objectAtIndex:0]] init] autorelease];        if( board )    {        [self.stack pushBoard:board animated:YES];    }}@end

 

 

3.修改AppDelegate.h里面的代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];    // Override point for customization after application launch.    self.window.backgroundColor = [UIColor whiteColor];                self.window.rootViewController = [BeeUIStackGroup stackGroupWithFirstStack:[BeeUIStack stackWithFirstBoard:[CatelogBoard board]]];//[CatalogBoard  board];这样写就没有导航栏    [self.window makeKeyAndVisible];    return YES;}

 

4.新建 LessonBaseBoard ,并修改代码

 

#import "Bee.h"#pragma mark -@interface LessonBaseBoard : BeeUIBoard{    BeeUITextView *    _textView;}@end

LessonBaseBoard.m
#import "LessonBaseBoard.h"#pragma mark -@implementation LessonBaseBoardDEF_SINGLETON( LessonBaseBoard );- (void)handleUISignal:(BeeUISignal *)signal{    [super handleUISignal:signal];        if ( [signal isKindOf:BeeUIBoard.SIGNAL] )    {        if ( [signal is:BeeUIBoard.CREATE_VIEWS] )        {            _textView = [[BeeUITextView alloc] initWithFrame:CGRectInset(self.viewBound, 5.0f, 5.0f)];            _textView.font = [UIFont boldSystemFontOfSize:12.0f];            _textView.textColor = [UIColor colorWithWhite:0.3f alpha:1.0f];            _textView.editable = NO;            [self.view addSubview:_textView];        }        else if ( [signal is:BeeUIBoard.DELETE_VIEWS] )        {            SAFE_RELEASE_SUBVIEW( _textView );        }    }        [self updateText];}- (void)updateText{#if __BEE_DEVELOPMENT__    NSMutableString * text = [NSMutableString string];    BeeLog(@"Signals-Count:%d",self.signals.count);    for ( NSUInteger i = 0; i < self.signals.count; ++i )    {        BeeUISignal * signal = [self.signals objectAtIndex:self.signals.count - i - 1];        [text appendFormat:@"[%d] %@\n", self.signalSeq - i, signal.name];    }        _textView.text = text;    _textView.scrollEnabled = YES;    _textView.showsVerticalScrollIndicator = YES;    [_textView flashScrollIndicators];#endif    // #ifdef __BEE_DEVELOPMENT__}@end

 

 

5.新建 Lesson1Board 继承 LessonBaseBoard

#import "Bee.h"#import "LessonBaseBoard.h"#pragma mark -@interface Lesson1Board : LessonBaseBoard@end

 

Lesson1Board.m
#import "Lesson1Board.h"#pragma mark -@implementation Lesson1Board// Other signal goes here- (void)handleUISignal:(BeeUISignal *)signal{    [super handleUISignal:signal];}// BeeUIBoard signal goes here- (void)handleUISignal_BeeUIBoard:(BeeUISignal *)signal{    [super handleUISignal:signal];        if ( [signal is:BeeUIBoard.CREATE_VIEWS] )    {        // 界面创建                [self setTitleString:@"Lesson 1"];        [self showNavigationBarAnimated:NO];    }    else if ( [signal is:BeeUIBoard.DELETE_VIEWS] )    {        // 界面删除    }    else if ( [signal is:BeeUIBoard.LAYOUT_VIEWS] )    {        // 界面重新布局    }    else if ( [signal is:BeeUIBoard.LOAD_DATAS] )    {        // 数据加载    }    else if ( [signal is:BeeUIBoard.FREE_DATAS] )    {        // 数据释放    }    else if ( [signal is:BeeUIBoard.WILL_APPEAR] )    {        // 将要显示    }    else if ( [signal is:BeeUIBoard.DID_APPEAR] )    {        // 已经显示    }    else if ( [signal is:BeeUIBoard.WILL_DISAPPEAR] )    {        // 将要隐藏    }    else if ( [signal is:BeeUIBoard.DID_DISAPPEAR] )    {        // 已经隐藏    }}@end

 

.后续的练习可以根据这个项目为原型进行修,bee的文档暂时比较少,可以根据whatsbug进行学习

 

 

 

 

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击