Как я могу размыть текст UILabel?
UIBlurEffectView размывает не текст, а весь фон.
Не могли бы вы сообщить мне, как я могу этого добиться?
Спасибо,
Как я могу размыть текст UILabel?
UIBlurEffectView размывает не текст, а весь фон.
Не могли бы вы сообщить мне, как я могу этого добиться?
Спасибо,
Поскольку это был интересный вопрос, я посмотрел документацию UILabel. Кажется, не существует метода, отвечающего только за рисование текста, который можно было бы переопределить.
Итак, мой способ решения вашей проблемы будет следующим:
Очевидным недостатком всего этого является то, что в этом пользовательском подклассе будут отсутствовать все функции атрибутивного текста и многострочного разделения UILabel.
Вы можете добиться размытия только текста без фона, используя CATextLayer
вместо UILabel
. CALayer
имеет свойство contentsScale
, и если вы установите его значение ниже масштаба экрана, вы получите эффект размытия.
let view = UIView()
let textLayer = CATextLayer()
textLayer.string = "yourText"
textLayer.contentsScale = 0.5 // lower number means more blurry text
view.layer.addSublayer(textLayer)
contentsScale
по умолчанию имеет значение 1,0, но для четкого отображения текста ему должно быть присвоено значение UIScreen.main.scale
, которое равно 2,0 для большинства iPhone, причем iPhone X является ярким примером со значением 3,0. Чем ниже значение, тем сильнее будет размыт текст.