Удалите фигуру из UIView, чтобы создать прозрачность - PullRequest
1 голос
/ 24 октября 2011

Вот примерное представление, которое у меня есть сейчас:

enter image description here

В идеале, я хотел бы вынуть «кусок» сверху, поэтому любые виды под ним теперь видны через эту удаленную область (например, прозрачность).

enter image description here

Я пытался создать путь, а затем с помощью CGContextClip попытался выполнить клип, но, похоже, он не обрезает фигуру, как предполагалось. Есть идеи, как это сделать, или даже если это вообще возможно?

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Как правило, чтобы сделать что-то подобное, можно создать UIView с прозрачным фоновым цветом, а затем вручную нарисовать «фон» с помощью CoreGraphics. Например, чтобы сделать вид, который по сути является кругом с черным фоном, вы можете сделать что-то подобное в методе drawRect:

- (void)drawRect:(CGRect)dirtyRect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 0, 0, 0, 1);
    CGContextFillElipseInRect(context, self.bounds);
}

Для чего-то более сложного, чем простой круг, вы должны использовать CGContextBeginPath() в сочетании с функциями CGContextMoveToPoint() и CGContextAddLineToPoint(). Это позволит вам сделать прозрачный вид с любой непрозрачной формой, которую вы хотите для фона.

РЕДАКТИРОВАТЬ: Чтобы обрезать фоновое изображение по определенному пути, вы можете сделать что-то вроде этого:

CGContextSaveGState(context);
CGImageRef image = [[UIImage imageNamed:@"backgroundImage.png"] CGImage];
CGContextBeginPath(context);
// add your shape to the path
CGContextClipToPath(context);
CGContextDrawImage(context, self.bounds, image);
CGContextRestoreGState(context);

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

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

Используйте [UIColor clearColor] в вашем V, чтобы сделать его прозрачным, вам, вероятно, придется также установить непрозрачный вид на NO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...