Могу ли я сделать альфа границы отличной от 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];
Спасибо. Это более полный ответ. –