Я не уверен, что вы подразумеваете под "CALayer
безье", но у вас есть несколько вариантов здесь:
- Создайте подкласс UIView, где вы рисуете свой круг, используя
UIBezierPath
методы в drawRect:
. Это представление затем может быть добавлено в другое представление как подпредставление и анимировано с использованием стандартных методов. Тем не менее, вас предупреждают, что это может повлиять на производительность (поскольку она должна постоянно перерисовываться), так что, если это окажется проблемой ...
- Создайте графический контекст и нарисуйте там свой круг. Возьмите изображение из этого графического контекста и установите его в качестве изображения для
UIImageView
. Анимируйте как в ответе (1). Таким образом, вы не будете перерисовывать все время, чтобы производительность была лучше, но сначала попробуйте вариант 1, поскольку он проще, и если у вас есть простой код для рисования, это не должно сильно на вас повлиять.
Для варианта 2 вы начинаете графический контекст, используя UIGraphicsBeginImageContextWithOptions
- затем вы рисуете и извлекаете изображение, используя UIGraphicsGetImageFromCurrentImageContext
, затем заканчиваете контекст, используя UIGraphicsEndImageContext
. Все эти функции документированы здесь
Пример кода для этого:
CGFloat radius = 50;
CGSize size = CGSizeMake(radius*2,radius*2);
CGPoint centre = CGPointMake(radius,radius);
UIGraphicsBeginImageContextWithOptions(size,NO, 0.0);
UIBezierPath * solidPath = [UIBezierPath bezierPathWithArcCenter:centre radius:edgeSize/20 startAngle:0 endAngle:2 * M_PI clockwise:YES];
[solidPath closePath];
[[UIColor whiteColor] set];
[solidPath fill];
UIImage *circle = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *imageView = [[UIImageView alloc] initWithImage:circle];