Swift / Как исправить: не хватает нижних ячеек TableView в размере UINavigationBar

#ios #swift

#iOS #swift

Вопрос:

Я использую этот фреймворк для перемещения UINavigationBar . У меня следующая проблема с каждым представлением (поскольку в каждом представлении есть UITableView или UICollectionView — Да, эта ошибка также появляется с UICollectionView )

введите описание изображения здесь

Нижняя часть каждого экрана не соответствует размеру UINavigationBar .

Контроллер является подклассом UIViewController .

 open class SLPagingViewSwift: UIViewController, UIScrollViewDelegate
  

UIViewControllers Создаются глобально:

 var settingsVC: UserSettingsVC?
  

Создан в классе, который создает контроллер:

 appDelegate.window = UIWindow(frame: UIScreen.main.bounds)

settings = settingsStb.instantiateViewController(withIdentifier: "UserSettingsVC") as? UserSettingsV
// among other VCs
self.setItems() //sets the images at the navigationbar               
let items = [itemsArray]

let controllers = [arrayOfVCs] as [UIViewController]

controller = SLPagingViewSwift(items: items, controllers: controllers, showPageControl: false)
controller.indexSelected = 1

nav = UINavigationController(rootViewController: controller)
appDelegate.window?.rootViewController = nav
appDelegate.window?.backgroundColor = cachedBlack
appDelegate.window?.makeKeyAndVisible()
  

Примером контроллера является UITableViewController . Такая же ошибка появляется во всех остальных, UIViewController с a UITableView , а также в одной, UITableViewController с a UICollectionView .

Чего мне не хватает? Помощь очень ценится.

Комментарии:

1. Возможно, это как-то связано с contentInset попробуйте изменить значение и посмотрите

2. collectionView.contentInset = UIEdgeInsetsMake(0, 0, 44, 0) / tableView.contentInset = UIEdgeInsetsMake(0, 0, 44, 0) сделал это. не стесняйтесь отвечать. даже если мне пришлось искать точное использование в Google, это помогло…

3. покажите свою раскадровку и работаете с constrain?

4. контроллер вызывается программно, поэтому нет раскадровки для отображения. и да. с ограничениями.

5. каков размер вашего tableview? прямо сейчас с этим выводом

Ответ №1:

Что вам нужно сделать, это создать глобальную константу и установить UIEdgeInsetsMake(), например:

 let collectionViewInset = UIEdgeInsetsMake(0, 0, 44, 0)
  

44 — это высота панели навигации, и вам нужно запустить ее после панели навигации, поэтому y = 44,0.

После этого вам нужно установить:

 collectionView.contentInset = collectionViewInset
  

И все, отсортировано!