类似帆布的元素

时间:2011-10-30 16:48:20

标签: objective-c ios cocoa-touch canvas drawing

我正在寻找在iOS应用中使用的“类似画布”的元素。通过“画布般的”我的意思是我想要一个表面,我可以在其上绘制矩形,线条,文本或图像等基本形状。我不需要3D或其他非常先进的东西 - 矩形和其他图像就足够了,如果需要,文本可以存储在图像中。

我无法想象没有这样的API可用,但他们如何称呼它?

2 个答案:

答案 0 :(得分:2)

使用UIKit,用户看到和交互的所有内容基本上都是一个视图。例如,按钮是视图,表视图是视图等。您的应用程序应该已经有一个主视图控制器或一个主窗口,它可以包含零个或多个视图。只要您能够实现drawRect:方法,就可以在您创建的任何视图上绘制。这是一个实现UIView子类的示例,您可以使用CoreGraphics绘制它:

@interface MyView : UIView
@end

@implementation MyView

- (void)drawRect:(CGRect)dirtyRect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 0, 0, 0, 1);
    // here, you can draw shapes, for example, a circle:
    CGContextFillEllipseInRect(context, CGContextMake(10, 10, 50, 50));
}

@end

然后,为了向您的应用程序添加MyView的实例,请在界面构建器中拖动自定义视图并将其类更改为MyView,或者在viewDidLoad中执行此操作您的视图控制器:

- (void)viewDidLoad {
    MyView * aView = [[MyView alloc] initWithFrame:self.bounds];
    [self.view addSubview:aView];
#if __has_feautre(objc_arc) != 1
    [aView release];
#endif
}

您可以从Quartz 2D Programming Guide了解drawRect方法中可以执行的操作的详情。

答案 1 :(得分:0)

像HTML 5 <canvas>一样的画布?选中“Core Graphics”(a.k.a。Quartz 2D)。