#ios #swift #xcode #uiview #shadow
Вопрос:
У меня есть две карты (UIViews) , которые сложены прямо друг на друга. На обеих картах нанесены тени, используя следующий стиль:
static func styleCardView(_ cardStyle: UIView) {
cardStyle.layer.shadowOpacity = 1
cardStyle.layer.shadowOffset = CGSize(width: 0, height: 1.75)
cardStyle.layer.shadowRadius = 1.7
cardStyle.layer.shadowColor = UIColor.lightGray.cgColor
cardStyle.layer.cornerRadius = 12
}
После того, как я перетаскиваю верхнюю карту с экрана (UIPanGesture), настройка карт сбрасывается, чтобы они снова были сложены в центре, как вы можете видеть на приведенном ниже gif:
Я пытаюсь удалить любые изменения толщины тени, когда верхняя карта перемещается и когда она сбрасывается в центр.
Проблема в том, что тень начальной точки (обе сложенные карты) слишком толстая, потому что обе тени карт накладываются друг на друга. Затем, когда верхняя карта исчезает с экрана, видна только тень нижней карты. Однако, когда верхняя карта сбрасывается в середину, толщина тени меняется, и сброс карты очевиден.
Есть ли какой-либо способ установить максимальную видимую толщину тени или предотвратить скопление теней?
Комментарии:
1. Одна вещь, которую вы могли бы сделать, это анимировать непрозрачность тени верхней карты, чтобы она была равна 0, когда они сложены, и 1, когда верхняя карта перемещена.
2. @Rengers — Спасибо. Я использовал что-то подобное в качестве обходного пути:
if (Double(abs(xFromCenter)) Double(abs(yFromCenter))) > 0 { styleCardView(cardView) } else { styleCardViewNoShadow(cardView) }
пока это работает, но я надеялся, что будет более простой способ сделать это.