UITableViewCell тень исчезает при прокрутке (iOS 13) - PullRequest
1 голос
/ 16 марта 2020

Я обнаружил некоторую регрессию в своем приложении, которая, я уверен, началась только в Xcode 11.3.1 (iOS 13).

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

image description

Приложение использует UITableView и метод внутреннего делегата willDisplayCell: Мы называем этот код:

dispatch_async(dispatch_get_main_queue(), ^{
    view.layer.cornerRadius = 4.0f;
    view.layer.borderWidth = 1.0f;
    view.layer.borderColor = [UIColor clearColor].CGColor;

    view.layer.shadowColor = shadowColor != nil ? shadowColor.CGColor : [[UIColor lightGrayColor] CGColor];
    view.layer.shadowOffset = CGSizeMake(0, 2.0f);
    view.layer.shadowRadius = 2.0f;
    view.layer.shadowOpacity = 1.0f;
    view.layer.masksToBounds = NO;
    view.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds cornerRadius:view.layer.cornerRadius].CGPath;
});

Я пытался играть с view.layer.zPosition и с view.backgroundColor=UIColor.clearColor без удачи.

Кто-нибудь знает, что там происходит?

Обновление:

Эта же проблема возникает и в UICollectionView.

Отвечая на комментарии:

  1. изменение UIUserInterfaceStyle в plist на "Light" не помогло.
  2. установить shadowColor в конце метода - не помогло help.
  3. добавление тени в cellforrow вместо willdisplaycell - не помогло

1 Ответ

0 голосов
/ 30 марта 2020

Попытайтесь добавить тень в пробуждении от пера ячейки коллекции, как показано ниже.

override func awakeFromNib() {
    super.awakeFromNib()
    view.layer.shadowColor = UIColor.red.cgColor
    view.layer.shadowOffset = CGSize(width: 0, height: 2)
    view.layer.shadowRadius = 2
    view.layer.shadowOpacity = 1
    view.layer.masksToBounds = false
}
...