2010-04-20 4 views
10

Comment puis-je obtenir la taille rectale d'un UITableViewCell?Comment obtenir la taille rectale de UITableViewCell?

Je suis en train d'afficher un vol stationnaire pop à chaque fois que l'utilisateur clique sur une cellule, et souhaite que le vol stationnaire pop à décentrée sur toutes les cellules:

[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68) 
           inView:self.view 
      permittedArrowDirections:UIPopoverArrowDirectionDown 
          animated:YES]; 

Répondre

38

Devait faire récemment. Vous devez utiliser [tableView rectForRowAtIndexPath]. Cependant, l'une des choses qui peut vous surprendre est que lorsque vous faites défiler l'UITableView, vous devez prendre en compte le décalage (c.-à-d. Quelque chose signalant sa position y comme 3000 pixels est bien sûr signifiant 3000 du haut de UITableView - pas 3000 pixels sur l'écran). En plus de cela, il apparaîtra naturellement en haut de la cellule, vous devez donc ajouter la moitié de la hauteur de la cellule aux calculs.

Ce code a bien fonctionné pour moi:

CGRect frame = [tableView rectForRowAtIndexPath:indexPath]; 
CGPoint yOffset = self.tableView.contentOffset; 
[self.popoverController presentPopoverFromRect:CGRectMake(frame.origin.x, (frame.origin.y + 45 - yOffset.y), frame.size.width, frame.size.height) 

Dans mon cas, chaque cellule était de 90 pixels de haut, d'où le bit '+45'. Substituez la moitié de votre taille de cellule.

+0

Ceci est une excellente solution! –

+0

C'était très utile. Je frottais le mauvais, je craquais ma tête avec [[tableView cellForRowAtIndexPath: indexPath] hauteur] - Votre solution était ce dont j'avais réellement besoin. Merci beaucoup! – Veeru

Questions connexes