Холстоподобный элемент - PullRequest
       15

Холстоподобный элемент

2 голосов
/ 30 октября 2011

Я ищу "холстоподобный" элемент для использования в приложениях iOS. Под «холстоподобным» я подразумеваю, что мне нужна поверхность, на которой я могу рисовать основные фигуры, такие как прямоугольники, линии, текст или изображения. Мне не нужны 3D или другие действительно продвинутые вещи - достаточно прямоугольников и других изображений, при необходимости текст может быть сохранен в изображениях.

Я не могу представить, что такого API нет, но как они его называют?

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

С 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
}

Подробнее о том, что можно делать в методе drawRect, можно узнать из Quartz 2D Руководство по программированию .

0 голосов
/ 30 октября 2011

Холст, как HTML 5 <canvas>? Отметьте « Core Graphics » (например, Quartz 2D).

...