iOS : Comment faire le bon d'échange en UIScrollView?
J'ai un UIScrollView
de taille (320,160). Je suis en ajoutant quelques UIImageView
en elle, qui sont de taille (213,160). La première UImageView
à partir de 54 (x) et ainsi de suite, j'ai ajouté un espace de 5,0 entre chaque UIImageView
. J'ai aussi activé pagingEnable
dans IB
& dans coding
. Ce que mon problème est que sa ne fonctionne pas correctement, comme par sa propriété! Quand je scroll, il doit me montrer UIImageViews
dans chaque page
au lieu de cela il me montre quelque chose comme voir la capture d'écran je veux quelque chose de sortie de cette voir la sortie capture d'écran
Où je fais mal? J'ai également avoir la fonction de<
(précédent) & >
(à côté) il y a de montrer des images. J'ai posé une question hier j'ai accepté cependant mon exigence est peu de changement et il ne deviendra pas ma solution. voir ma question.
Est-il une propriété particulière que j'ai pour définir, ou d'un peu de logique, je devrais le mettre en œuvre? Tous les exemples que j'ai vérifié et essayé, mais je trouve que mon exigence est certains. Point de moi! Merci.
ÉDITÉ:
- (void) setImages
{
CGFloat contentOffset = 0.0f;
for (int i=0; i<[arrImgUrls count]; i++)
{
CGRect imageViewFrame = CGRectMake(contentOffset, 0.0f, 213, scrollImages.frame.size.height);
AsyncImageView *asyncImageView = [[AsyncImageView alloc] initWithFrame:imageViewFrame];
[asyncImageView.layer setMasksToBounds:YES];
NSString *urlImage = [arrImgUrls objectAtIndex:i];
NSURL *url = [NSURL URLWithString:urlImage];
[asyncImageView loadImageFromURL:url];
[scrollImages addSubview:asyncImageView];
contentOffset += asyncImageView.frame.size.width+increment;
[asyncImageView release];
}
scrollImages.contentSize = CGSizeMake([arrImgUrls count] * scrollImages.frame.size.width, scrollImages.frame.size.height);
scrollImages.pagingEnabled = YES;
scrollImages.clipsToBounds = NO;
}
-(IBAction)prevImage:(id)sender
{
_currentImage--;
[btnNext setEnabled:YES];
if (_currentImage==0)
{
[btnPrev setEnabled:NO];
[scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth), 0) animated:YES];
return;
}
NSLog(@"previous:mult %d inc %d current %d",_currentImage*imageWidth,increment*_currentImage,_currentImage);
int nextImage=_currentImage+2;
[scrollImages setContentOffset:CGPointMake((((_currentImage*imageWidth)-(increment*_currentImage)))+(nextImage*increment), 0) animated:YES];
}
-(IBAction)nextImage:(id)sender
{
_currentImage++;
NSLog(@"next:mult %d inc %d current %d",_currentImage*imageWidth,increment*_currentImage,_currentImage);
[scrollImages setContentOffset:CGPointMake((_currentImage*imageWidth)+(increment*_currentImage), 0) animated:YES];
[btnPrev setEnabled:YES];
if (_imageCount-1 == _currentImage)
{
[btnNext setEnabled:NO];
}
}
- Ne pas faire défiler la vue de toute la pagination (mais seulement défilement normal) ou est votre problème que vous avez les images ne s'affichent pas dans le milieu lors du défilement/pagination s'arrête?
- Oui @Kai, exactement. Quand j'ai faites défiler les images ne s'affichent pas dans le milieu.
Vous devez vous connecter pour publier un commentaire.
Pagination de défilement des vues toujours à la page des multiples de leur taille d'image. Donc dans votre exemple de pagination est toujours +320.
Ce comportement est bon si vous avez des portions de contenu correspondant à l'image de défilement de la vue.
Ce que vous avez à faire, c'est de donner à votre défiler la vue d'une largeur de 213 et définir sa
clipsToBounds
propriétéNO
.Après que votre faites défiler jusqu'à afficher les pages exactement comment vous le voulez et vous voyez ce qui est à gauche et à droite à l'extérieur du cadre.
En outre, vous avez à faire un truc pour faire de cette gauche et de droite délégué de la région de touches pour le défilement de l'affichage.
C'est beaucoup expliqué dans cette réponse.
Oublier de définir le scrollview de la taille du contenu.
assurez-vous que vous avez défini la taille du contenu pour l'adapter à un nombre N d'images.
si vous voulez le scrollview de défilement pour 10 images avec une image sur chaque page
définir le scrollView
contentSize
comme