Я спроектировал элементы пользовательского интерфейса в эскизе, и один из них имеет тень с размытием 1 и растяжением 0. Я просмотрел документ для свойства слоя представлений, и у слоя нет ничего с именем spread или blur или чего-либо подобного (единственным элементом управления был просто shadowOpacity) Как можно управлять такими вещами, как размытие и распространение?
РЕДАКТИРОВАТЬ:
Вот мои настройки в Sketch:
А вот как я хочу, чтобы моя тень выглядела:
А вот как это выглядит на данный момент: Обратите внимание, вам нужно щелкнуть по картинке, чтобы увидеть тень.
Мой код выглядит следующим образом:
func setupLayer(){
view.layer.cornerRadius = 2
view.layer.shadowColor = Colors.Shadow.CGColor
view.layer.shadowOffset = CGSize(width: 0, height: 1)
view.layer.shadowOpacity = 0.9
view.layer.shadowRadius = 5
}
ios
swift
uiview
core-graphics
Кванталиинуксит
источник
источник
Ответы:
Вот как с почти идеальной точностью применить все 6 свойств тени Sketch к слою UIView:
Допустим, мы хотим представить следующее:
Вы можете легко сделать это с помощью:
или более кратко:
Пример:
Примечание:
spread
он жесткоbounds
кодирует путь на основе CALayer. Если границы слоя когда-либо изменятся, вы захотите снова вызватьapplySketchShadow()
метод.источник
maskToBounds = false
.maskToBounds = false
. Пример неудачи - применение этой тени к файлуUIButton
.shadowRadius = blur / UIScreen.main.scale
противопоставить жесткому кодированиюblur / 2.0
? Или есть еще одна причина делить на 2? @matchifang Ты понял это?Вы можете попробовать это .... вы можете поиграть со значениями. Параметр
shadowRadius
определяет степень размытия.shadowOffset
диктует, куда идет тень.источник
Sketch Shadow с использованием IBDesignable и IBInspectable в Swift 4
источник
layer.shadowRadius * 2
Разве ты не должен вернуться за получателем shadowBlurЭтот код мне очень понравился:
источник
Для тех, кто пытается применить тень к заранее заданному пути (например, для кругового обзора), вот что у меня получилось:
Я опубликую несколько примеров позже, но это сработало для меня для круговых обзоров.
источник
1
сx
иy
0
shapeLayer.applyShadow(color: .black, alpha: 1, x: 0, y: 0, blur: 0, spread: 1, path: path)
. В этом случае тень имеет смещение, а не должно. В данном случае треугольник должен иметь тень распространения 1px во всех направлениях ibb.co/YjwRb9BМое решение, основанное на этом сообщении, отвечает: (Swift 3)
источник
Мне очень нравится ответ, размещенный здесь, и предложения в комментариях. Вот как я изменил это решение:
ИСПОЛЬЗОВАНИЕ:
источник
Возможно, это небольшой поворот в истории, но, возможно, у некоторых была такая же проблема. Я использовал образец кода из принятого ответа. Однако эффекты совершенно разные: - значение y должно быть примерно наполовину по сравнению с тем же значением в скетче - я попытался применить тень к панели навигации, и эффект сильно отличался - едва заметен при использовании тех же значений, что и скетч.
Получается, что метод полностью не отражает параметры эскиза. Есть подсказки?
источник