Как правило, чтобы сделать что-то подобное, можно создать 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
, но это в основном то, что нужно сделать. Как я уже говорил выше, вы можете использовать базовые функции рисования линий для добавления линий, прямоугольников, окружностей и всего остального на ваш путь.