текст с контуром внешнего штриха на iOS

Android реализует контур с помощью внешнего штриха. Таким образом, у вас может быть действительно толстый контур, который выглядит так:

Толстый контур Android

iOS реализует контур с помощью внутреннего штриха. Таким образом, толстый контур полностью поглотит внутренний цвет:

толстый контур iOS

Есть ли способ создать эффект внешнего штриха на iOS?


person P.Melch    schedule 03.07.2018    source источник
comment
Это не о том, как создать текст с обводкой и заливкой. Этот пост о том, как iOS рисует штрих. Он делает это, рисуя обводку внутри символов (т.е. внутреннюю обводку). Таким образом, цвет заливки расходуется, если я использую очень толстый контур. В этом контексте заданные атрибуты не имеют значения, потому что это переводит обсуждение от алгоритма, используемого iOS, к тому, как настроить внутренний штрих. но для полноты: NSStrokeWidthAttributeName: -10; NSstrokeColorAttributeName: черный цвет. Что я хочу знать, возможно ли создать внешний штрих   -  person P.Melch    schedule 11.07.2018
comment
Извините, неправильно понял, я думал, что значение (положительное/отрицательное) помогало установить штрих внутрь/вне. а что касается аута, тогда была проблема с цветом заливки   -  person Larme    schedule 11.07.2018
comment
@P.Melch Вы нашли решение?   -  person zeke    schedule 18.06.2020


Ответы (1)


Я реализовал ту же функцию, используя эту библиотеку: https://github.com/tobihagemann/THLabel

Однако я должен сделать больше. Если ваша метка отображает сложную атрибутивную строку с некоторыми атрибутами, такими как подчеркивание, зачеркивание, эта библиотека не поможет вам решить ее полностью.

Я немного изменился в draw(_:), чтобы вручную нарисовать только заполненное изображение на основе основной текстовой формы, которая выглядит как внешняя обводка. https://github.com/dungntm58/THLabel/blob/swift/THLabel/THLabel.swift К сожалению, в некоторых случаях он работает некорректно. Я надеюсь, что это поможет вам решить вашу проблему.

Редактировать: я обновил свой код, чтобы решить множество проблем с тенью метки, я думаю, что он будет работать отлично.

person whatever_is_ok    schedule 23.11.2018