Добавление тени к UIView, позиционируемому с помощью SnapKit

Я разместил UIView с помощью SnapKit, и мне нужно найти способ добавить тень. Поскольку я расположил представление относительно других UIView, у меня нет высоты, ширины или начальной координаты представления. Как я могу добавить тень к этому UIView, расположенному с использованием автоматического макета SnapKit. Код для позиционирования UIView таков:

tableViewBackground.snp.makeConstraints{ (make) -> Void in
        make.width.lessThanOrEqualToSuperview()
        make.height.lessThanOrEqualToSuperview()
        make.right.equalToSuperview().offset(-20)
        make.left.equalToSuperview().offset(20)
        make.bottom.equalToSuperview().offset(-20)
        make.top.equalTo(poiLabel.snp.bottom).offset(20)
}

person KevinZ    schedule 19.04.2017    source источник
comment
Почему бы не использовать настройки тени layer, как и любую другую тень вида?   -  person matt    schedule 19.04.2017
comment
@matt Я пытался использовать tableViewBackground.layer.shadowPath = UIBezierPath(rect: tableViewBackground.bounds).cgPath. Проблема в том, что tableViewBackground.bounds равно [0,0,0,0], потому что представление позиционируется с помощью snapkit.   -  person KevinZ    schedule 19.04.2017
comment
Это просто говорит о том, что вы делаете это слишком рано. Подождите, пока представление будет расположено так, чтобы у вас были фактические границы.   -  person matt    schedule 19.04.2017
comment
@matt спасибо за совет. В настоящее время теневой слой добавляется сразу после установки ограничений Snap Kit в методе контроллера представления onViewDidLoad. Куда добавить слой с тенью?   -  person KevinZ    schedule 19.04.2017
comment
viewDidLayoutSubviews, вероятно, самый ранний достоверный момент. Но будьте осторожны, потому что он может вызываться много раз впоследствии.   -  person matt    schedule 19.04.2017
comment
@matt, хорошо, большое спасибо   -  person KevinZ    schedule 19.04.2017


Ответы (1)


Создание теневого слоя перемещено с viewDidLoad на viewDidLayoutSubviews.

person KevinZ    schedule 19.04.2017