2013-01-29 4 views
0

J'essaie d'afficher des images sur UIScrollView, toutes ces images sont affichées horizontalement, Cependant, le problème que je reçois un scintillement dans le chargement des images sur le défilement.UIScrollview images défilement infini (charge d'image) question ios

J'ai essayé d'utiliser ce code et j'ai modifié UILabel à UIImageview et appelé le téléchargement d'image asynchrone sur scroll dans scrollViewDidEndDecelerating - Image Scroll Circular, un avec 3 pages seulement. Il fonctionne bien avec l'exemple 'label de texte' mais quand je charge des images de façon asynchrone (en cache aussi), alors il y a un scintillement sur le défilement. Supposons que, si je défile de la page 0 à la page 1, la page 0 scintille un peu et que l'on retrouve la page 1 à nouveau.

Une idée de comment se débarrasser de ce problème?

+0

essayer l'image vue de l'image de changement avec effet slide – amar

+0

Désolé, changement d'image avec effet de diapositives? –

+0

Prendre une vue ajouter une image dessus et la changer avec animation de diapositives – amar

Répondre

0

Essayez d'ajouter une image en utilisant la file d'attente principale actuelle:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.scrollView addSubview:imageView]; 
}); 
+0

Je le fais déjà via gcd et je l'ajoute sur le fil principal. Merci –

0

Ma classe .m vous avez besoin d'une vue et ce point de vue un imageViewSlider (UIImageView) est ajouté. combinez-le avec l'indicateur d'activité et l'extraction détachée de l'image pour voir si cela fonctionne. Cette œuvre diapositive sans défilante

#import "ImageSliderView.h" 
#import <QuartzCore/QuartzCore.h> 
#define kAnimationKey @"animationKey" 
@interface ImageSliderView() 

@end 

@implementation ImageSliderView 
@synthesize imageData; 
@synthesize imageViewSlider; 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Set GestureRecoginzer.. 
    //******************************************************Swipe recognisers************************** 
    UISwipeGestureRecognizer *rightRecognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeHandle:)]; 

    rightRecognizer.direction=UISwipeGestureRecognizerDirectionRight; 

    [rightRecognizer setNumberOfTouchesRequired:1]; 

    [self.view addGestureRecognizer:rightRecognizer]; 

    [rightRecognizer release]; 

    UISwipeGestureRecognizer *leftRecognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeHandle:)]; 

    leftRecognizer.direction=UISwipeGestureRecognizerDirectionLeft; 

    [leftRecognizer setNumberOfTouchesRequired:1]; 

    [self.view addGestureRecognizer:leftRecognizer]; 

    [leftRecognizer release]; 

    //****************************************************** 
    currentPage=0; 
     // Do any additional setup after loading the view from its nib. 
} 

- (void)viewDidUnload 
{ 
    [self setImageData:nil]; 
    [self setImageViewSlider:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 
-(void)dealloc 
{ 
    [imageData release]; 
    [imageViewSlider release]; 
    [super dealloc]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 




#pragma mark ---swipe 
-(void)swipeHandle:(UISwipeGestureRecognizer *)guestureRecognizer 
{ 
    if(guestureRecognizer.direction==UISwipeGestureRecognizerDirectionLeft) 
    { 

     [self nextButtonAndSlideForwad]; 

    } 
    if(guestureRecognizer.direction==UISwipeGestureRecognizerDirectionRight) 
    { 
       [self prevButtonAndSlideBack]; 
    } 

} 



-(void)nextButtonAndSlideForwad 
{ 


    self.imageViewSlider.backgroundColor=[UIColor redColor]; 
      [self slideForward]; 



} 

-(void)prevButtonAndSlideBack 
{ 
    self.imageViewSlider.backgroundColor=[UIColor greenColor]; 
    [self slideBackward]; 
} 

-(void)slideForward 
{ 
    CATransition *animation = [CATransition animation]; 
    [animation setDelegate:self]; 
    [animation setType:kCATransitionPush]; 
    [animation setSubtype:kCATransitionFromRight]; 
    [animation setDuration:0.4f]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; 
    [[self.view layer] addAnimation:animation forKey:kAnimationKey]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.55]; 
    [UIView commitAnimations]; 


} 

-(void)slideBackward 
{ 

    CATransition *animation = [CATransition animation]; 
    [animation setDelegate:self]; 
    [animation setType:kCATransitionPush]; 
    [animation setSubtype:kCATransitionFromLeft]; 
    [animation setDuration:0.4f]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0]; 
    [[self.view layer] addAnimation:animation forKey:kAnimationKey]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.55]; 
    [UIView commitAnimations]; 

} 

@end