#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
И все, отсортировано!