2015-04-15 1 views
2

У меня есть CALayer, у которого есть образ круга, я пытаюсь добавить к нему внешнюю границу. (тени здесь не будут работать). Я попытался изменить размер CALAyer и добавить границу, но позиционирование выглядит некорректным, я не хочу, чтобы фигура перемещалась, просто добавляемая граница.Пограничный на CALayer отображается некорректно

вот мой код

CGFloat borderWidth = 10.0f; 

    CGFloat xPos = cont.layer.frame.origin.x; 
    CGFloat yPos = cont.layer.frame.origin.y; 
    CGFloat contWidth = cont.layer.frame.size.width; 
    CGFloat contHeight = cont.layer.frame.size.width; 

    cont.layer.frame = CGRectMake(xPos, yPos, contWidth + borderWidth, contHeight + borderWidth); 
    cont.layer.cornerRadius = contWidth/2; 
    cont.layer.borderColor = [[UIColor darkGrayColor] CGColor]; 
    cont.layer.borderWidth = borderWidth; 

Заранее спасибо

+0

не 100% уверен, что вы имеете здесь происходит, однако вы, кажется, только для учета ширины границы один раз в этой линии .. cont.layer. frame = CGRectMake (xPos, yPos, contWidth + borderWidth, contHeight + borderWidth); Возможно, вы имеете в виду contWidth + borderWidth * 2 или некоторые такие, в зависимости от того, каким образом вы пытаетесь пойти – myte

+0

Я дал ответ проверить. Просто добавьте эту строку под своим кодом. –

+0

Мой исходный слой перемещает положение, я хочу, чтобы он оставался в одном и том же месте, и граница появилась снаружи? – geoBApp

ответ

0

enter image description here Ваш код правильный. Пожалуйста, добавьте одну строку:

cont.clipsToBounds = ДА

self.imgView1.layer.cornerRadius = self.imgView1.frame.size.width/2;

self.imgView1.layer.borderColor = [[UIColor blueColor] CGColor];

self.imgView1.layer.borderWidth = 0.0f;

self.imgView1.layer.masksToBounds = TRUE;

После этого выполните следующие действия:

  1. Создайте еще один UIImageView и поместите его над первым ImageView.

  2. Затем увеличивают высоту и ширину secondImageView до 20.

  3. множество secondImageView центра и FirstImageCenter равны (в той же точке).

и написать следующий код:

self.imgView2.layer.cornerRadius = self.imgView2.frame.size.width/2;

self.imgView2.layer.borderColor = [[UIColor blueColor] CGColor];

self.imgView2.layer.borderWidth = 10.0f;

self.imgView2.layer.masksToBounds = TRUE;

Пожалуйста, сделайте это выше, чтобы решить вашу проблему.

Теперь вы получите такой вывод:

enter image description here

+0

clipsToBounds не работает для CALayer, masksTobounds делает, но не то, что мне нужно. Мой исходный слой перемещает положение, я хочу, чтобы он оставался в одном и том же месте, а граница появилась снаружи? – geoBApp

+0

Я сделал это с помощью clipToBounds wait, я поделился снимком экрана –

+0

Я установил цвет границы на синий. вам нужен этот выход или что-то еще. и clipToBounds - свойство UIImageView. –