jamztang
6/13/2012 - 9:52 AM

UIBlocksView - Adding blocks to UIViews

UIBlocksView - Adding blocks to UIViews

#import "UIBlocksView.h"

@interface UIBlocksView ()
@property (nonatomic, copy) UIDrawRectBlock drawRectBlock;
@property (nonatomic, copy) UILayoutSubviewBlock layoutSubviewsBlock;
@end

@implementation UIBlocksView
@synthesize drawRectBlock, layoutSubviewsBlock;

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.drawRectBlock = nil;
        self.layoutSubviewsBlock = nil;
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
    if (self.drawRectBlock) {
        self.drawRectBlock(rect);
    }
}

- (void)layoutSubviews {
    [super layoutSubviews];
    if (self.layoutSubviewsBlock) {
        self.layoutSubviewsBlock();
    }
}

- (void)onLayoutSubviewsHandler:(UILayoutSubviewBlock)block {
    self.layoutSubviewsBlock = block;
}

- (void)onDrawRectHandler:(UIDrawRectBlock)block {
    self.drawRectBlock = block;
}

@end
// ARC based

#import <UIKit/UIKit.h>

typedef void(^UIDrawRectBlock)(CGRect rect);
typedef void(^UILayoutSubviewBlock)(void);

@interface UIBlocksView : UIView

- (void)onDrawRectHandler:(UIDrawRectBlock)block;
- (void)onLayoutSubviewsHandler:(UILayoutSubviewBlock)block;

@end