Ответ 1
Я решил задачу с помощью этого простого кода:
table.ScrollIndicatorInsets = new UIEdgeInsets(64, 0, 0, 0);
Я установил
NavigationController.NavigationBar.Translucent = true;
Затем добавьте таблицу и установите фрейм в RootView Frame и:
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
float y = this.TopLayoutGuide.Length;
table.ContentInset = new UIEdgeInsets (y, 0, 0, 0);
}
Но у меня есть панель прокрутки стола в разделе NavigationBar (я использую monotouch):
Я решил задачу с помощью этого простого кода:
table.ScrollIndicatorInsets = new UIEdgeInsets(64, 0, 0, 0);
Просто поместите
navigationBar.translucent = NO;
вы решите проблему:)
Другой вариант:,
Введите следующий код.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
[self setEdgesForExtendedLayout:UIRectEdgeBottom];
}
Другой вариант:
Почему UIViewController распространяется под UINavigationBar, а UITableViewController не работает?
Попробуйте следующее:
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;
}
Это сработало для меня tableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0)
В большинстве случаев решения, которые вводят волшебную константу, не масштабируются, например, если следующий iPhone вводит другую высоту навигационной панели, нам нужно будет обновить наш код.
К счастью, Apple предоставила нам более чистые способы преодоления этой проблемы, например topLayoutGuide:
Свойство topLayoutGuide вступает в игру, когда контроллер вида самый передний экран. Это указывает на наибольшую вертикальную протяженность для содержимое, которое вы не хотите появляться за полупрозрачным или прозрачная панель UIKit (например, состояние или панель навигации)
Программно вы можете достичь с помощью следующего фрагмента кода (то же самое можно сделать и с помощью IB):
override func viewDidLoad() {
super.viewDidLoad()
automaticallyAdjustsScrollViewInsets = false
tableView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.topAnchor.constraint(equalTo:
topLayoutGuide.bottomAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
}
Примечание. topLayoutGuide устарел в iOS 11, мы должны использовать свойство safeAreaLayoutGuide UIView,