Я не совсем понимаю ваш вопрос, но я дам вам решение по предоставленной вами ссылке.
Таким образом, в ссылке у нас есть большой прозрачный круг, и мы хотим заблокировать маленький круг на заднем плане справа.
То, что вы можете, это.
Вы создаете два одинаковых представления.
Первый вид - это обычный вид, на нем отображается все, что вы хотите.Во-вторых, у вас будет backgroundView, который имеет ту же позицию и тот же размер, что и первый вид.Но суть в том, что backgroundView будет отображать тот же цвет фона, что и реальный фоновый вид.
Таким образом, иерархия вида будет такой:
- Отображение вида (форма круга)
- BackgroundView (размер круга, та же позиция, что и у первого вида, тот же цвет, что и у реального)вид фона, в данном случае цвет синий)
- Real BackgroundView (цвет синий).
, тогда все, что вам нужно сделать, это сохранить альфа-значение backgroundView равным 1 и изменить альфа-значение первого представления, скажем, на 0,6
пример кода
private func addCircle(){
// adding a blue circle
let circleView = UIView()
circleView.backgroundColor = .blue
circleView.alpha = 0.5
view.addSubview(circleView)
circleView.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
circleView.center = view.center
circleView.layer.cornerRadius = 100 / 2
circleView.layer.masksToBounds = true
// adding a backgroundView
let backgroundView = UIView()
backgroundView.backgroundColor = .red
view.insertSubview(backgroundView, belowSubview: circleView)
backgroundView.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
backgroundView.center = view.center
backgroundView.layer.cornerRadius = 100 / 2
backgroundView.layer.masksToBounds = true
}