Не знаете, где искать это, но я хочу создать полупрозрачную маску вида или слоя, которые могут перемещаться, изменять непрозрачность и иметь несколько на экране сразу, что перекрывается.Полупрозрачная динамическая маска на динамическом UIView
Что-то этот эффект:
Где два маленьких окна могут перемещаться и изменять непрозрачность цвета.
Я пробовал с маской CALayer
, но это просто пробивает, поэтому я добавил CAShapeLayer
в отверстие, но вы можете видеть края. Я попытался использовать allowsEdgeAntialiasing
на CAShapeLayer
, но это, похоже, не сработало.
Другие примеры Я видел только работу с UIImageViews, потому что они используют два UIImageViews друг на друга, чтобы получить эффект. К сожалению, мне нужно это для работы над любым типом UIView.
Я также пробовал использовать CGBlendMode.SourceOut
, который хорошо работает, за исключением того, что перекрывающиеся области легче, что делает общий смысл, но не тем, что мне нужно.
let blendMode = CGBlendMode.SourceOut
CGContextSaveGState(context)
CGContextSetFillColorWithColor(context, UIColor(white: 0.0, alpha: 0.75).CGColor)
CGContextFillRect(context, rect)
CGContextSetBlendMode(context, blendMode)
CGContextSetFillColorWithColor(context, UIColor(white: 0.0, alpha: 0.25).CGColor)
CGContextFillRect(context, CGRectMake(0, 500, 60, 50))
CGContextSetFillColorWithColor(context, UIColor(white: 0.0, alpha: 1).CGColor)
CGContextFillRect(context, CGRectMake(0, 550, 60, 50))
Последние два заполнения прямоугольникам перекрываются и первым, чтобы установить весь вид иметь полупрозрачные наложения.