2010-05-06 5 views
0

J'ai une page de détail de type UIScrollView. Sur ce je veux un UIImageView facultatif et un UITextView obligatoire. Si aucune image n'est disponible, la vue de l'image ne doit pas prendre d'espace. Le texte de la vue de texte peut être de différentes tailles.UiScrollView avec contenu défilant

Lorsque la vue est chargée avec, disons, l'image et le texte dont j'ai besoin pour pouvoir faire défiler tout le contenu. Donc l'image glisse du haut de l'écran.

Je ne peux pas obtenir ce travail et je pense que ça devrait être facile. Des idées?

Répondre

0

Vous devez appeler setContentSize avec la taille des points de vue.

CGRect frameOfImage; 
CGRect frameOfText; 
CGRect frameOfContent; 

frameOfImage.origin = CGPointZero; 
frameOfImage.size = myImage ? [myImage size] : CGSizeZero; 

[myImage setFrame:frameOfImage]; 

frameOfText.origin.x = 0; 
frameOfText.origin.y = frameOfImage.origin.y + frameOfImage.size.height; 
frameOfText.size = [myText.text sizeWithFont:myText.font forWidth:myScroll.bounds.width lineBreakMode:myText.lineBreakMode]; 

[myText setFrame:frameOfText]; 

frameOfContent = CGRectUnion(frameOfImage , frameOfText); 
frameOfContent.size.height += frameOfContent.origin.y; 
frameOfContent.size.width += frameOfContent.origin.x; 

[myScroll setContextSize:frameOfContent.size]; 

Vous pouvez faire le dernier bit dans les layoutSubviews d'un UIScrollView personnalisé ou tout cela à la fois dans votre contrôleur lorsque vous savez s'il y a une image ou non.

0

Vous devez créer votre propre vue, qui hérite après UIScrollView.

Dans votre mesure YourScrollView vous devez remplacer

- (void) layoutSubviews; 

Il calcule la taille du texte, la taille de l'image (et l'espacement supplémentaire entre ensuite), puis définissez la contentSize pour la vue de défilement à l'aide:

[self setContentSize:CGSizeMake(CGRectGetWidth(self.bounds), yourCalculatedHeight)]; 

Hope this helps, Paul

Questions connexes