CGContextRef context = UIGraphicsGetCurrentContext();
получит графический контекст для текущего представления, поэтому, если вы вызовете это в drawRect: метод UIView, он будет рисовать.
Я не понимаю, что вы подразумеваете под:
Я не возражаю против drawRect, я не
подклассы ничего
но если вы хотите сделать собственный чертеж, вы должны либо переопределить drawRect: метод, либо использовать слои. Чтобы использовать слои, вы бы назвали CGContextRef context = CGLayerGetContext(theLayer);
вместо CGContextRef context = UIGraphicsGetCurrentContext();
.
Хорошо, я посмотрел документацию и там сказано, что вы можете получить CGContextRef, вызвав UIGraphicsGetCurrentContext () из drawRectMethod. Вот что он говорит: В приложении для iOS вы устанавливаете объект UIView для рисования и реализуете метод drawRect: для выполнения рисования. Перед вызовом пользовательского метода drawRect: объект вида автоматически настраивает свою среду рисования, чтобы ваш код мог немедленно начать рисование. В рамках этой конфигурации объект UIView создает графический контекст (непрозрачный тип CGContextRef) для текущей среды рисования. Вы получаете этот графический контекст, вызывая функцию UIKit UIGraphicsGetCurrentContext. Вы сохраняете и восстанавливаете графические контексты, используя функции UIGraphicsPushContext и UIGraphicsPopContext.
Вы можете создавать собственные графические контекстные объекты в ситуациях, когда вы хотите рисовать где-то, кроме вашего вида. Например, вы можете захватить серию команд рисования и использовать их для создания изображения или файла PDF. Чтобы создать контекст, вы используете функцию CGBitmapContextCreate или CGPDFContextCreate. После того, как у вас есть контекст, вы можете передать его функциям рисования, необходимым для создания вашего контента.
При создании пользовательских контекстов система координат для этих контекстов отличается от собственной системы координат, используемой iOS. Вместо того чтобы исходная точка находилась в верхнем левом углу поверхности рисования, она находится в нижнем левом углу, а оси направлены вверх и вправо. Координаты, которые вы указываете в своих командах рисования, должны принимать это во внимание, иначе полученное изображение или файл PDF могут отображаться неправильно при визуализации. Подробности об использовании CGBitmapContextCreate и CGPDFContextCreate см. В «Создание контекста растровой графики» и «Создание контекста графики PDF».