iOS 7 UITableView: ruimte tussen navigatiebalk en eerste cel verwijderen

Beschrijving van het probleem: met iOS 7 in gegroepeerde UITableViewis er een opening tussen de bovenkant van de tabelweergave en de eerste cel.

Het vreemde is dat wanneer ik de inhoud voor de eerste keer laad, de tabel in orde lijkt te zijn (eerste afbeelding), maar wanneer ik naar beneden scrol, verschijnt er een spatie tussen de bovenste en de eerste cel (tweede afbeelding):

voer hier afbeeldingsbeschrijving invoer hier de afbeeldingsbeschrijving in

Met stijl gewoon komt dit gedrag niet voor, maar helaas moet ik de gegroepeerde tabelweergavestijl gebruiken.

Enig idee over?


Antwoord 1, autoriteit 100%

Voeg dit gewoon toe aan je ViewDidLoad-methode

self.automaticallyAdjustsScrollViewInsets = NO; 

Antwoord 2, autoriteit 28%

Het antwoord was erg grappig voor mij en mijn team, en werkte als een zonnetje

  • Verplaats in de Interface Builder de tabelweergave naar een andere weergave
    in de weergavehiërarchie.

REDEN:

We hebben geconstateerd dat dit alleen gebeurt voor de eerste weergave in de weergavehiërarchie, als deze eerste weergave een UITableView is.
Dus alle andere vergelijkbare UITableViews hebben deze vervelende sectie niet, behalve de eerste.
We hebben geprobeerd de UITableView van de eerste plaats in de weergavehiërarchie te halen en alles werkte zoals verwacht.


Antwoord 3, autoriteit 12%

Ga naar de attributen inspecteur van de View Controller door de xib of de controller in Storyboard te selecteren. Haal het vinkje weg bij Instellingen voor scrollweergave aanpassenin Lay-out. Het lost het probleem opvoer hier afbeeldingsbeschrijving in


Antwoord 4, autoriteit 9%

Als je een UITableView gebruikt met gegroepeerde stijl en slechts 1 groep, gebruik dan in plaats daarvan de gewone stijl om je probleem op te lossen.

UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];

Antwoord 5, autoriteit 4%

De eenvoudigste oplossing voor dit probleem in gegroepeerd type tableViewis:

tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];

Antwoord 6, autoriteit 2%

Om dit probleem op te lossen, moet u ervoor zorgen dat u dit veld op ViewController heeft uitgeschakeld:

Op ViewController >> Attibutes Inspecteur >> Lay-out (niet aangevinkt – Instellingen voor scrollweergave aanpassen)

voer hier de afbeeldingsbeschrijving in

als dit niet genoeg is, probeer dit dan op TableView, stel Stijl in op Plain:

Voorbeeldafbeelding

Dit lost je probleem op


Antwoord 7, autoriteit 2%

jongens!
Ik had hetzelfde probleem. TableView verscheen met vrije ruimte tussen de navigatiebalk en de eerste cel.
Deze code heeft me gered:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return 10;
    }
    else return 2;
}

Antwoord 8

Er was een spatie boven de UITableView zelf, en ook tussen de cellen.
Ik heb mijn oplossing gevonden in 2 verschillende antwoorden hierboven..post het opnieuw zodat niemand beide oplossingen mist.

Hiermee is de spatie van boven verwijderd:

self.automaticallyAdjustsScrollViewInsets = NO; 

en hierdoor zijn de spaties onder de cellen verwijderd:
Het kenmerk ‘Style’ van de UITableView instellen op ‘Plain’


Antwoord 9

Ik werk met Xcode 7.3.1, iOS9en swift 2. Ik wil graag delen wat voor mij werkte:

Voeg dit gewoon toe aan je ViewDidLoad-methode

self.automaticallyAdjustsScrollViewInsets = false;

Antwoord 10

Vanaf iOS 7 krijg je automatisch een groepskoptekst en wat ruimte. Vergelijk uw app met de app Instellingen en u zult het zien. U kunt er omheen werken door de UITableView te vertellen dat de kophoogte zo klein mogelijk moet worden ingesteld. Zie Hoe de eerste groepskop te verbergen.


Antwoord 11

Ik realiseer me dat dit lang geleden is beantwoord, maar voor iedereen die in een vergelijkbare situatie zit, zal ik delen wat uiteindelijk voor mij werkte:

Als u een xib gebruikt, selecteert u de weergave op het hoogste niveau en stelt u ‘Statusbalk’ in op ‘Geen’ in het gebied Simulated Metrics van de Attributes Inspector. Mijn spatiëringsprobleem meteen opgelost.


Antwoord 12

Voor mij werkte dit niet

self.automaticallyAdjustsScrollViewInsets = NO;

Dit zorgde er alleen voor dat de tabelweergave onder de Navigatiebalk zat.

Wat voor mij werkte, was om naar mijn storyboard te gaan en de grootte van mijn tableView te wijzigen. Het lijkt erop dat mijn tableView bovenaan een opening van 20px had om de statusBar mogelijk te maken. Ik heb het geschaald en alles was perfect uitgelijnd.


Antwoord 13

Ik zag deze extra ruimte bovenaan een van mijn tafelweergaven in een heel vreemde situatie.

Nadat ik een UIScrollViewals rootweergave van mijn eerste controller in mijn navigatiestack had toegevoegd, als ik de volgende controller presenteerde als een Show Detail-reeks, mijn volgende controller zou de ruimte boven de tafelweergave hebben.

De oplossing voor mij was om de segue te veranderen in Present Modallyen alles werd weer normaal.

Het vreemdste deel van de segue-verandering was dat voordatik mijn root-weergave toevoegde als een UIScrollView, mijn Show Detail-segue de volgende controller modaal. Maar nadatik de root UIScrollViewhad toegevoegd, was het Show Detail-segment duwenop de volgende controller (wat niet wat ik wilde).


Antwoord 14

Had een soortgelijk probleem, zelfs automatische instellingAdjustsScrollViewInsets op NEE. Dit is voor mij opgelost:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
    return CGFLOAT_MIN;
}

Antwoord 15

In de UIViewController.hiOS9 SDK hebben een methode:

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

is geen eigendom, dus

self.automaticallyAdjustsScrollViewInsets = NO; 

zou moeten zijn

-(BOOL)automaticallyAdjustsScrollViewInsets{   
     return NO;
}

Other episodes