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