LDDrawingView 0.1

LDDrawingView 0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

未声明 维护。



  • Light Design 和 Christian Di Lorenzo

目的

在 iOS 中,如果您想在 UIView 中进行任何数量的自定义绘制,您必须创建一个子类并重写方法如 drawRect:layoutSubviews:。如果您正在进行大量绘制,这并不是一个问题。然而,对于更简单的情况,这会变得有些繁琐。《LDDrawingView》通过使用两个可从对象外部设置的代码块:《drawRectBlock》和《layoutSubviewsBlock》来克服这一点。在示例中,我提供了一个更复杂的例子,包括 AutoLayout 等,但这并不是最佳用法。我建议在您只需要一个简单的标志或绘制物时使用此类,但不想创建 UIView 的子类。

如果您想简单地编写此代码,请查看 LDDrawingView.m。它不是很复杂,但它是 UIView 的一个好补充。

如何使用

下面是视图控制器中示例代码:

- (void)loadView {
    [super loadView];
    LDDrawingView *drawingView = [[LDDrawingView alloc] init];
    drawingView.translatesAutoresizingMaskIntoConstraints = NO;
    drawingView.backgroundColor = [UIColor clearColor];

    [drawingView setDrawRectBlock:^(CGContextRef context, CGRect rect){
        CGContextSetFillColorWithColor(context, [UIColor darkGrayColor].CGColor);
        CGContextAddEllipseInRect(context, rect);
        CGContextFillPath(context);
    }];

    [drawingView setLayoutBlock:^(LDDrawingView *view){
        LDDrawingView *subview = [[LDDrawingView alloc] init];
        subview.backgroundColor = [UIColor clearColor];
        subview.translatesAutoresizingMaskIntoConstraints = NO;

        [subview setDrawRectBlock:^(CGContextRef context, CGRect rect){
            CGContextSetFillColorWithColor(context, [UIColor lightGrayColor].CGColor);
            UIRectFill(rect);
        }];

        [view addSubview:subview];
        [view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(100)-[subview]-(100)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(subview)]];
        [view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(100)-[subview]-(100)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(subview)]];
    }];

    [self.view addSubview:drawingView];

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[drawingView]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(drawingView)]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[drawingView]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(drawingView)]];
}