Панель навигации + Контроллер поиска + Большое название: Hairline во время прокрутки - PullRequest
0 голосов
/ 03 февраля 2019

Контекст:

  • UINavigationController с UITableViewController
  • UISearchController на панели навигации
  • Панель навигации полупрозрачная с черным стилем, она используетбольшой заголовок, tintColor, barTintColor (без фонового изображения).

Проблема:

У меня странный анимационный глюк, который показывает волосок над панелью поиска.Линия волос появляется только во время прокрутки.

Screencast

Я уже пробовал много решений относительно подобных проблем, но они не помогли.

Протестировано с iPhone 7 с iOS 12.1.3

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете решить проблему с волосяным покровом, используя

searchController.searchBar.layer.borderColor = UIColor(red: 242/255.0, green: 82/255.0, blue: 46/255.0, alpha: 1).CGColor
searchController.searchBar.layer.borderWidth = 1

, если вышеприведенное не сработало.Вы можете полностью удалить линию волос

extension UINavigationBar {
        func hideBottomHairline() {
            self.hairlineImageView?.isHidden = true
        }

        func showBottomHairline() {
            self.hairlineImageView?.isHidden = false
        }
    }

extension UIView {
    fileprivate var hairlineImageView: UIImageView? {
        return hairlineImageView(in: self)
    }

    fileprivate func hairlineImageView(in view: UIView) -> UIImageView? {
        if let imageView = view as? UIImageView, imageView.bounds.height <= 1.0 {
            return imageView
        }

        for subview in view.subviews {
            if let imageView = self.hairlineImageView(in: subview) { return imageView }
        }

        return nil
    }
}
...