2016-05-27 2 views
-2

Я плохо разбираюсь в CALayer, но мне нужно нарисовать знак плюса (+), и я не хочу использовать изображение, поскольку хочу оживить рисунок. Любая помощь?Нарисуйте знак плюс (+) с помощью CALayer

+0

Создайте два 'CAShapeLayer', образуя знак плюса, где проблема? Если вы сделаете ситуацию более сложной задачей, вы можете сначала найти решение самостоятельно. – luk2302

+0

Почему вы не рисуете два безьевых дорожки, как горизонтальную линию, а одну вертикальную? –

ответ

3

После всех голосов, я смог сделать это сам. Вот как для других, кому это может понадобиться

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]; 
2

Как говорится в luk2302, используйте CAShapeLayer.

Вы можете установить CGPath в CAShapeLayer. Вы можете получить CGPath от любых UIBezierPath. (Он имеет свойство CGPath, которое позволяет перейти к базовому объекту CGPath для любых UIBezierPath.)

Предлагаю прочитать на UIBezierPath. Он имеет методы moveToPoint и addLineToPoint.

Вы переместились в верхнюю часть своего плюса, добавили линию вниз, затем переместитесь влево от своего плюса и добавьте линию поперек.

Обратите внимание, что вы также можете анимировать изображения, в зависимости от типа анимации, которую вы используете. Какую анимацию вам нужно сделать?

0

Другим простым способом было бы использовать два UIView с тем же фоновым цветом и добавить их как подзаголовок в другой UIView. Затем вы можете использовать метод UIView animateWithDuration: ... для выполнения ваших простых анимаций.