/ / UITableViewController przewijaj z dodatkową przestrzenią (jak aplikacja Notes) - ios, cel-c, uitableview, interfejs użytkownika, przewijanie

UITableViewController przewijanie z dodatkową przestrzenią (jak aplikacja Notes) - ios, cel-c, uitableview, interfejs użytkownika, przewijanie

Jak zreplikować to zachowanie znalezione w aplikacji Notes:

  1. Masz UITableViewController z przedmiotami,
  2. Możesz przewinąć listę w dół (z dużą ilością przedmiotów),
  3. Po dotarciu do dolnej części listy możesz"overscroll" trochę, ale lista nie przewinie się do końca. Pod ostatnim elementem pozostanie trochę miejsca. To miejsce jest wykorzystywane w programie Notes do wyświetlania niektórych obrazów układu.

Aby pokazać ze zdjęciami: Zdjęcie 1

To jest lista "nieskopiowana". Łatwo jest stworzyć takie wykorzystanie UITableViewController. A kiedy "wyciągniesz" listę, domyślnie UITableViewController po prostu odbija się z powrotem do tego stanu.

Jednak Notes pozwala na to: Zdjęcie 2

na przykład. Po przewinięciu, aby zostawić trochę miejsca, nie pozwól, aby odbijał się od nowa.

W jaki sposób replikujesz takie zachowanie?

Odpowiedzi:

10 dla odpowiedzi № 1

Możesz zmienić zawartość wstawek swojego tableView w ten sposób:

[_tableView setContentInset:UIEdgeInsetsMake(0, 0, 100, 0)];

Na końcu tabeli pojawi się wstawka o wielkości 100 pikseli na dole tabeli. Widok podczas przewijania.


4 dla odpowiedzi nr 2

Oto prosty sposób na zrobienie tego.

Po prostu (być może w ViewDidLoad) dodaj puste UIView jako stopkę tabeli do UITableView.

Coś takiego:

UIView *footer = [[UIView alloc] init];
footer.frame = CGRectMake(0, 0, 0, 100); // The only one that matters here is the height
self.tableView.tableFooterView = footer; // tableView is an outlet to the tableView

4 dla odpowiedzi nr 3

Szybki:

Myślę, że sposób na zrobienie tego w Swift jest taki.

tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0)

Wiem, że to stare pytanie, ale może przynieść korzyść komuś.


3 dla odpowiedzi № 4

Szybki:

    var footer:UIView = UIView(frame: CGRectMake(0, 0, 0, 44))
tableView.tableFooterView = footer

1 dla odpowiedzi nr 5

Aktualizowanie odpowiedzi Kirualex:

Idealne umieszczenie: UITableViewController viewDidLoad

Swift 3:

// Add 50 extra pixels at bottom of the list when scrolling
self.tableView.contentInset = UIEdgeInsets(top:0, left: 0, bottom: 50, right: 0)