j'ai vécu le même problème. Dans mon cas, je parcourais un UIScrollView en essayant de calculer dynamiquement son contentSize. En passant en revue les sous-vues, j'ai trouvé deux imagesImages mystérieuses parmi les sous-vues (que je n'ai pas ajoutées), qui totalisaient exactement 100 pixels. Il s'avère que ces deux images sont en fait l'indicateur de défilement qui est automatiquement ajouté à la scrollview.
Ma solution était de créer une classe de conteneur, appelons-la ContainerView, et j'ai créé la scrollview.
A l'intérieur de cette ContainerView je redéfinir les méthodes addSubview et willRemoveSubview, comme ceci:
- (void)addSubview:(UIView *)view {
[_addedSubviews addObject:view];
[_scrollView addSubview:view];
}
- (void)willRemoveSubview:(UIView *)subview {
[_addedSubviews removeObject:subview];
[_scrollView willRemoveSubview:subview];
}
Maintenant, vous pouvez ajouter une méthode de calcul de la taille. Cette fois, nous allons parcourir le tableau appelé _addedSubviews, au lieu des sous-vues scrollviews, car nous savons que les vues à l'intérieur de _addedSubviews sont uniquement celles ajoutées par nous. Et à cause de cela, nous allons éviter de faire défiler les indicateurs de défilement et autres joyeusetés :-)
Enfin, faites simplement une boucle et calculez.
- (CGSize)desiredContentSize {
for(UIView *mySubviews in _addedSubviews) {
// Calculate size
}
// Return size
}
La propriété est-contentInset mis à zéro? –
Oui inset est à 0 - Je vais passer par là et assurez-vous que la fonction que j'ai calculer la hauteur est correcte - c'est la seule chose que je peux penser à: P –