Intereting Posts
Расширить класс, соответствующий протоколу? xCode 4.2.3 не может компилироваться в iOS 5.1.1 (9B208) или iOS 5.1.1 (9B206) Как установить размер изображения для улучшения вывода OCR.? Могу ли я указать текущее местоположение для целей тестирования? Имя метода изменяется в инспекторе соединений раскадровки HitTest с моделями .dae Как решить: это приложение изменяет механизм автозапуска из фонового потока UIImageWriteToSavedPhotosAlbum сохраняет с неправильным размером изображения после получения из контекста изображения Распределение Adhoc: прогресс в установке приложения не отображается и устанавливается в фоновом режиме Размер экрана камеры в iphone 5 Почему когда-нибудь переменная становится NULL в блоке Как реагировать на изменение размера UIControl при изменении данных как создать и выделить красную линию волос (вниз), когда в сегментированном элементе управления Swift выбран сегментный сегмент iOS – работа с несколькими активными видами Элементы UITableview становятся жирными после прокрутки вверх

Нарисуйте квадраты с Core Graphics или включите pngs?

Я делаю легенду для графика, который будет выглядеть примерно так:

[ ] Line 1 [ ] Line 2 [ ] Line 3 

Ящики слева должны быть того же цвета, что и строки на графике.

Во всяком случае, все, что мне нужно знать, заключается в том, быстрее ли рисовать ящики с Core Graphics или просто создавать png с GIMP для квадратов и включать их.

Используйте UIView для каждой легенды и установите цвет фона для нужного цвета.

Оба подхода достаточно быстры, и это не должно меняться. Однако использование Core Graphics имеет то преимущество, что вы намного более гибкие, например, когда позже решите, что вам нужны дополнительные цвета. Кроме того, ваше приложение будет меньше, потому что вам не нужно включать PNG-файлы.

Ящики для рисования – это быстро! Я бы работал с Core Graphics каждый день, тем более, что вы бесплатно получаете поддержку сетчатки.

Как видно из этого примера, вы можете сделать это, используя только UIKit классы:

 // Setup colors [myBoxColor setFill]; [myBoxBorderColor set]; // Setup a path for the box UIBezierPath* path = [UIBezierBath bezierPathWithRect:rectOfTheBox]; path.lineWidth = 2; // Draw! [path fill]; [path stroke]; 

Одно предупреждение; инсульт заполняется с использованием краев пути в качестве центра линии. Таким образом, вы получите размытую линию, если вы погладите путь с интегральным прямоугольником с шириной 1 точки.

Вы можете исправить это, если вам нужна линия с 1 точкой для границы, сделав что-то вроде этого:

 CGRect strokeRect = UIEdgeInsetsInsetRect(rectOfTheBox, UIEdgeInsetsMake(0.5f,0.5f,0.5f,0.5f)); UIBezierPath* path = [UIBezierPath bezierPathWithRect:strokeRect]; [path stroke]; 

На iOS Core Graphics довольно проста в использовании. В методе drawRect: вашем представлении просто сделайте это, чтобы нарисовать квадрат:

 - (void)drawRect:(CGRect)frame { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1); // gray CGContextFillRect(context, CGRectMake(10, 10, 20, 20)); // our rect is {10,10,20,20) // draw a line CGContextSetRGBStrokeColor(context, 1, 0, 0, 1); CGContextBeginPath(context); CGContextMoveToPoint(context, startX, startY); CGContextAddLineToPoint(context, endX, endY); CGContextStrokePath(context); } 

Надеюсь это поможет!