2015-02-12 2 views
1

У меня есть UIView, у которого есть слой с альфа-значением 0,5 и белый цвет фона. И мне нужно иметь границу с тем же белым, но с альфа-значением 1. К сожалению, AFAIK альфа-значение границы всегда одинаково с bgcolor's. Итак, мои вопросы:Как сделать значение альфа-границы CALayer отличным от bgcolor

  1. Могу ли я сделать альфа границы отличной от bgcolor?
  2. Если я не могу, есть ли у вас какие-либо предложения, как это сделать?

ответ

1

Могу ли я сделать альфа границы отличной от bgcolor?

Да. Вы могли бы сделать что-то вроде этого:

CALayer * firstLayer = [[CALayer alloc] init]; 

[firstLayer setFrame:CGRectMake(100, 100, 100, 100)]; 

firstLayer.borderColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0].CGColor; 
firstLayer.borderWidth = 3.0f; 
firstLayer.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5].CGColor; 

Другим подходом было бы иметь слой внутри другого слоя того же размера. Дайте внешнему слою необходимую толщину границы и убедитесь, что ее непрозрачность составляет 100%. Второй слой должен иметь дробную непрозрачности:

CALayer * firstLayer = [[CALayer alloc] init]; 
CALayer * secondLayer = [[CALayer alloc] init]; 

[firstLayer setFrame:CGRectMake(100, 100, 100, 100)]; 
[secondLayer setFrame:CGRectMake(0, 0, 100, 100)]; 
[firstLayer addSublayer:secondLayer]; 

firstLayer.borderColor = [UIColor redColor].CGColor; 
firstLayer.borderWidth = 1.0f; 

secondLayer.backgroundColor = [UIColor redColor].CGColor; 
secondLayer.opacity = 0.8f; 

[self.view.layer addSublayer:firstLayer]; 
+0

Спасибо. Это более полный ответ. –

2

Попробуйте это. Это должно только изменить цвет рамки и только альфа.

[self.yourView.layer setBorderColor:[UIColor colorWithRed: 0.0 green: 0.0 blue: 0.0 alpha:1.0].CGColor]; Вы можете, конечно, изменить значения RGB на все, что вам нужно.

1

Просто использовать:

view.layer.borderColor = [[UIColor redColor] colorWithAlphaComponent:0.6].CGColor; 
view.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.2]; 
Смежные вопросы