У меня возникают проблемы с тем, чтобы работать с темами. Нижеследующий тест должен содержать два оранжевых и один зеленый прямоугольник.Работа с UIGraphicsPushContext (aContext) и UIGraphicsPopContext()
Вот мое понимание кода ниже ...
- Рисую оранжевый прямоугольник на 50,50
- я называю ничью greenRect на 200,200, посылая текущий контекст
- Я толкаю текущий контекст в стеке, измените цвет штриха и нарисуйте зеленый прямоугольник на 100 100
- Я выхожу из текущего контекста, который должен восстановить исходный контекст (цвет оранжевого штриха)
- Затем я рисую последний прямоугольник, который должен быть поглаживание оранжевый
Последний прямоугольник должен тактный оранжевый, но поглаживание зеленый, говорил мне, что я изменил первоначальный контекст
Мысли?
- (void)drawRect:(CGRect)rect{
CGRect aRectangle=CGRectMake(50., 50., 40., 40.);
UIBezierPath *path=[UIBezierPath bezierPathWithRect:aRectangle];
UIColor *strokeColor=[UIColor orangeColor];
[strokeColor setStroke];
[path stroke];
CGContextRef context=UIGraphicsGetCurrentContext();
[self drawGreenRect:context];
CGRect anotherRectangle=CGRectMake(100., 100., 40., 40.);
UIBezierPath *anotherPath=[UIBezierPath bezierPathWithRect:anotherRectangle];
[anotherPath stroke];
}
- (void)drawGreenRect:(CGContextRef)ctxt{
UIGraphicsPushContext(UIGraphicsGetCurrentContext());
CGRect aRectangle=CGRectMake(200., 200., 40., 40.);
UIBezierPath *path=[UIBezierPath bezierPathWithRect:aRectangle];
UIColor *strokeColor=[UIColor greenColor];
[strokeColor setStroke];
[path stroke];
UIGraphicsPopContext();
}
Документы Apple говорят, что UIGraphicsPushContext Делает указанный контекст графики текущим контекстом. Вы можете использовать эту функцию, чтобы сохранить предыдущее состояние графики и сделать указанный контекст текущим контекстом. Вы должны уравновешивать вызовы этой функции с помощью соответствующих вызовов функции UIGraphicsPopContext. Вы должны вызывать эту функцию только из основного потока вашего приложения. Как использовать эту функцию для сохранения графического контекста? – suhrmesa