Intereting Posts
Как сообщить 0/1 из false / true с помощью NSJSONSerialization? Отключение взаимодействия пользователя с UIBarButtonItem BugSense отвечает кодом состояния 500 на iOS в приложении для телефонных разговоров Компиляция Xcode 5 против ios6.1 не сохраняет макет Как сохранить целое число в Swift? после установки клиента GData ios в xcode4, не может использовать OAuth Неопределенные символы для архитектуры armv Есть ли способ использовать Core MIDI на устройствах pre iOS 4.2? Оптимизация преобразования текстуры палитры в RGB565 на iOS 4+ (с использованием таблицы поиска) Разная ориентация интерфейса для UIViewControllers в стеке UINavigationController Не удается получить авторизацию HealthStore на WatchOS 2 Beta 3 на устройстве Мой запрос reloaddata не вызывает методы делегата в UItableviewcontroller? NSJSONSerialization – «Неожиданный конец файла во время синтаксического анализа» мутация в быстром перечислении? Можно ли сделать копию объекта Realm?

Тени сохраняются в UITableView после reloadSections:

Из-за того, что наш дизайнер был садистом, у меня есть UITableView с сегментированным элементом управления, который переключается между двумя различными типами ячеек в отдельных каналах. Ячейки выделены разными идентификаторами и классами – все это прекрасно работает. Ячейки разделяют родителя, но имеют разные размеры, и по соображениям оптимизации я устанавливаю layer.shadowpath вручную в layoutSubviews () родителя. Мне нужны тени: пожелания дизайнера.

Проблема в том, что после того, как я переключусь на второй сегмент, некоторые из них позади стола – тени, свисающие с тем, что, по моему мнению, является клетками выше. Как видно из первого изображения, есть две тени, и если я прокручу вниз, чтобы закрыть самую верхнюю видимую ячейку, тень исчезнет, ​​что приведет меня к мысли, что тени смещены. Дальнейшая прокрутка заставляет эти тени исчезать и снова не появляться снова, пока снова не переключится на вкладки. Остальные тени прекрасны.

две тени

две тени

немного прокрутите

одна тень ушла

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

Я делаю все программно: настраивая представления и автозапуск. В настоящее время высоты ячеек жестко закодированы. Я не уверен, какая информация актуальна, поскольку я полностью в недоумении, поэтому вот как я устанавливаю shadowPath .

 override func layoutSubviews() { super.layoutSubviews() cardView.layer.shadowPath = UIBezierPath(rect: cardView.bounds).CGPath } 

Для простоты карта размещается в contentView со следующим визуальным форматом:

 "V:|-marginV-[card]-marginV-|" "H:|-marginH-[card]-marginH-|" 

По какой бы то ни было причине, хотя я использовал отдельные классы и отдельные reuseIdentifier s, первые повторно используемые ячейки, только что выходящие из порта просмотра, по-прежнему были определены как высокие ячейки в другом сегменте. Когда я изменил

let cell = tableView.dequeueReusableCellWithIdentifier(booksReuseIdentifier) as! ProfileBookCell let cell = tableView.dequeueReusableCellWithIdentifier(booksReuseIdentifier) as! ProfileBookCell включить indexPath как

let cell = tableView.dequeueReusableCellWithIdentifier(booksReuseIdentifier, forIndexPath: indexPath) as! ProfileBookCell let cell = tableView.dequeueReusableCellWithIdentifier(booksReuseIdentifier, forIndexPath: indexPath) as! ProfileBookCell проблема утилизации была исправлена, и оценки были правильно рассчитаны. Я попробовал layoutIfNeeded в десятке разных мест, но это не исправляло.

У меня была та же самая проблема, и я попробовал текущее выделенное решение, но это ничто иное не показалось мне сработавшим. Попробовав так много других вещей, я, наконец, попытался переместить мой теневой код внутри функции layoutSubviews моего подкласса UITableViewCell, и он наконец-то сработал! Я думаю, что это сработало, потому что окончательный размер ячейки не всегда правильно вычисляется до тех пор, пока не вызовет layouSubviews, и ему нужен правильный размер, чтобы нарисовать тень.

 override func layoutSubviews() { super.layoutSubviews() addShadow(cell: self) } private func addShadow(cell:UITableViewCell) { cell.layer.shadowOffset = CGSize(width:1, height:1) cell.layer.shadowColor = UIColor.black.cgColor cell.layer.shadowRadius = 1 cell.layer.shadowOpacity = 0.6 cell.clipsToBounds = false let shadowFrame: CGRect = (cell.layer.bounds) let shadowPath: CGPath = UIBezierPath(rect: shadowFrame).cgPath cell.layer.shadowPath = shadowPath }