Я плохо разбираюсь в CALayer, но мне нужно нарисовать знак плюса (+), и я не хочу использовать изображение, поскольку хочу оживить рисунок. Любая помощь?Нарисуйте знак плюс (+) с помощью CALayer
ответ
После всех голосов, я смог сделать это сам. Вот как для других, кому это может понадобиться
CGFloat height = 2.f;
CGFloat width = 3.f;
CGFloat cornerRadius = 1.f;
CALayer *hLayer = [CALayer layer];//this is the left - right stroke
hLayer.frame = CGRectMake(0, CGRectGetMidY(self.bounds)-(height/2), width, height);
hLayer.cornerRadius = cornerRadius;
CALayer *vLayer = [CALayer layer];// this is the top - bottom stroke
vLayer.frame = CGRectMake(CGRectGetMidX(self.bounds) - (height/2), -3,height, width);
vLayer.cornerRadius = cornerRadius;
[self.layer addSublayer:hLayer];
[self.layer addSublayer:vLayer];
Как говорится в luk2302, используйте CAShapeLayer
.
Вы можете установить CGPath
в CAShapeLayer
. Вы можете получить CGPath
от любых UIBezierPath
. (Он имеет свойство CGPath
, которое позволяет перейти к базовому объекту CGPath для любых UIBezierPath
.)
Предлагаю прочитать на UIBezierPath. Он имеет методы moveToPoint
и addLineToPoint
.
Вы переместились в верхнюю часть своего плюса, добавили линию вниз, затем переместитесь влево от своего плюса и добавьте линию поперек.
Обратите внимание, что вы также можете анимировать изображения, в зависимости от типа анимации, которую вы используете. Какую анимацию вам нужно сделать?
Другим простым способом было бы использовать два UIView с тем же фоновым цветом и добавить их как подзаголовок в другой UIView. Затем вы можете использовать метод UIView animateWithDuration: ... для выполнения ваших простых анимаций.
Создайте два 'CAShapeLayer', образуя знак плюса, где проблема? Если вы сделаете ситуацию более сложной задачей, вы можете сначала найти решение самостоятельно. – luk2302
Почему вы не рисуете два безьевых дорожки, как горизонтальную линию, а одну вертикальную? –