2016-08-04 4 views
0

J'essaie de créer un en-tête de vue de la table extensible et j'ai vu ce code sur une ligne post:TableView ContentInset et ContentOffset

override func viewDidLoad() { 
    tableView.contentInset = UIEdgeInsets(top: kTableHeaderHeight, left: 0, bottom: 0, right: 0) 
    tableView.contentOffset = CGPoint(x: 0, , y: -kTableHeaderHeight) 
    updateHeaderView() 
} 

Je suis un peu de mal à comprendre ce code.

donc essentiellement ce qu'il fait est (en supposant que l'écran est de 0 à 500 en hauteur et kTableHeaderHeight = 200):

1) Il est d'abord d'ajouter un rembourrage au sommet de la tableView en le déplaçant par kTableHeaderHeight dans la contentInset propriété (ce mouvement est par rapport à l'image de la tableView). Alors maintenant, la tableView existe -200 à 500?

2) Ensuite, il déplace ses limites de -kTableHeaderHeight. Le contentOffset le fait-il simplement défiler dans la région de -200 à 500? Est-ce la raison pour laquelle nous utilisons contentOffset par -kTableHeaderHeight dans ce cas?

Répondre

1

1) Non, si encart est positif, il fait alors la zone vue de table plus petite, comme 200.500

2) contentOffset est l'état de tableview. Ainsi, lorsque vous définissez le décalage sur -200, le point zéro du contenu est déplacé à 200 depuis le point zéro de la vue de table, quel que soit le contenu inséré. Donc, ce que fait ce code est de réserver une place 200point pour l'en-tête personnalisé, qui ne chevauche jamais le contenu des cellules de la vue table (comme le font les en-têtes ou pieds de page de l'API de vue de table).