Skip to content

Instantly share code, notes, and snippets.

@jamztang
Created June 13, 2012 09:52
Show Gist options
  • Save jamztang/2923136 to your computer and use it in GitHub Desktop.
Save jamztang/2923136 to your computer and use it in GitHub Desktop.
UIBlocksView - Adding blocks to UIViews
// 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
#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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment