быстрый ImageView с низким альфа и subImageView прозрачным, показывая родительский вид, но с 1 альфа - PullRequest
0 голосов
/ 04 марта 2020

У меня проблемы с настройкой моих subImageViews, чтобы показывать родительский ImageView с альфа 1 в их области, но все вокруг мне нужно иметь альфа 0.25. У тебя есть идеи? Я пытался сделать это через View, теперь ImageView, но не могу найти решение. 16 квадратов посередине нужно показать четкое изображение, после нажатия кнопки «Пуск» они обрежут свою область и отправят ее другим V C. Спасибо за помощь

Screenshot showing simulator with storyboard structure

1 Ответ

0 голосов
/ 05 марта 2020

Так что я немного поиграл и нашел решение (также благодаря ссылке @iOSDev на статью).

Если кому-то понадобятся подобные вещи, вот оно:

@IBOutlet weak var alphaView: UIView!
@IBOutlet weak var pickedImage: UIImageView!
@IBOutlet weak var bigStackView: UIStackView!


override func viewWillAppear(_ animated: Bool) {
    pickedImage.image = imagePicked


    // Set white background color with custom alpha
    alphaView.backgroundColor = UIColor(white: 255/255, alpha: 0.85)

    // Create the initial layer from the stackView bounds.
    let maskLayer = CAShapeLayer()
    maskLayer.frame = alphaView.bounds

    // Create the frame to cover whole stackView
    let rect = CGRect(
        x: bigStackView.frame.minX,
        y: bigStackView.frame.minY,
        width: bigStackView.bounds.width,
        height: bigStackView.bounds.height)

    // Create the path
    let path = UIBezierPath(rect: alphaView.bounds)
    maskLayer.fillRule = CAShapeLayerFillRule.evenOdd

    // Append the framer to the path so that it is subtracted
    path.append(UIBezierPath(rect: rect))
    maskLayer.path = path.cgPath

    // Set the mask of the alphaview
    alphaView.layer.mask = maskLayer
}

selectedImage - представление фонового изображения, которое покрыто aplhaView, используемым только для того, чтобы сделать его туманным, а bigStackView имеет 16 квадратов в середине, чтобы определить положение искомого квадрата. Можно также использовать явное значение CGPoint & CGSize.

Снимок экрана с симулятора

...