Сделайте UIView прозрачным только для определенных представлений - PullRequest
0 голосов
/ 15 октября 2018

В настоящее время у меня есть UIView, который полностью прозрачен и помещен над многими другими ярлыками.За всеми надписями находится фоновое изображение, и, поскольку все надписи прозрачно-фоновые, я могу видеть сквозь них изображение.Затем, поскольку этот вид, помещенный поверх надписей, также установлен прозрачным, я могу видеть надписи над ним.Есть ли способ сделать этот вид прозрачным только для фонового изображения?То, что когда я просматриваю его, я вижу ТОЛЬКО фоновое изображение, а не метки, как если бы метки не существовали в этом представлении.

PS Я видел этот пост , который определенно связан, но ссылка в ответе мертва.

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

РЕДАКТИРОВАТЬ

Это то, что я имею в виду:

enter image description here

Прозрачный вид, на который указывает стрелка,НЕ в режиме прокрутки, а над ним.В представлении прокрутки будет много текстового содержимого, и поэтому, когда они проходят под указанным представлением, они будут видны.Как сделать так, чтобы этот вид зависания отражал только большое изображение позади него, а не текст позади него?То есть я хочу, чтобы когда тексты проходили под этим представлением, они были невидимы, и представление всегда отражало фоновое изображение.И, поскольку это постоянно меняющееся изображение, а не сплошной цвет, я не могу просто установить цвет этого парящего вида в соответствии с фоном.

1 Ответ

0 голосов
/ 15 октября 2018

Я не совсем понимаю ваш вопрос, но я дам вам решение по предоставленной вами ссылке.

Таким образом, в ссылке у нас есть большой прозрачный круг, и мы хотим заблокировать маленький круг на заднем плане справа.

То, что вы можете, это.

Вы создаете два одинаковых представления.

Первый вид - это обычный вид, на нем отображается все, что вы хотите.Во-вторых, у вас будет backgroundView, который имеет ту же позицию и тот же размер, что и первый вид.Но суть в том, что backgroundView будет отображать тот же цвет фона, что и реальный фоновый вид.

Таким образом, иерархия вида будет такой:

  1. Отображение вида (форма круга)
  2. BackgroundView (размер круга, та же позиция, что и у первого вида, тот же цвет, что и у реального)вид фона, в данном случае цвет синий)
  3. 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


}
...