У меня есть UIPickerView.Я хотел бы замаскировать его, чтобы оно не показывало сжатые слова за пределами фонового слоя, который вы можете видеть слева и справа:
Я попытался замаскировать его с помощью CAShapeLayer, но вместо этого он удаляет весь текст в UIPickerView: (игнорировать бежевый цвет; это именно то, что снимает камера)
Чтобы убедиться, что мой CAShapeLayer был правильного размера и формы, я добавил его в качестве слоя и закомментировал маску:
Как я и ожидал, 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