Как замаскировать UIPickerView с помощью CAShapeLayer - PullRequest
0 голосов
/ 18 июня 2019

У меня есть UIPickerView.Я хотел бы замаскировать его, чтобы оно не показывало сжатые слова за пределами фонового слоя, который вы можете видеть слева и справа:

UIPickerView

Я попытался замаскировать его с помощью CAShapeLayer, но вместо этого он удаляет весь текст в UIPickerView: (игнорировать бежевый цвет; это именно то, что снимает камера)

Masked UIPickerView

Чтобы убедиться, что мой CAShapeLayer был правильного размера и формы, я добавил его в качестве слоя и закомментировал маску:

enter image description here

Как я и ожидал, CAShapeLayer имеет правильный размер и правильное положение.

Итак, это подводит меня к вопросу: что не так с моим кодом?BG - фоновый слой.filterSelection - это UIPickerView.

guard let BG = filterSelectionBG else { return }
let maskLayer = CAShapeLayer()
maskLayer.backgroundColor = UIColor.red.cgColor
maskLayer.fillColor = UIColor.red.cgColor
let path = CGMutablePath()
path.addRect(BG.frame)
maskLayer.path = path

filterSelection.layer.mask = maskLayer
...