2014-05-18 5 views
0

사용자가 서버에서 데이터를 가져 오는 내 galleryViewController을 스크롤 할 때 페이드 효과를 추가하고 싶습니다. 페이드 효과를 내 scrollViewController에 구현할 수 없습니다.스크롤 할 때의 페이드 효과

코드 :

#import "GrillGalleryCollectionViewController.h" 
#import "AFNetworking.h" 
@interface GrillGalleryCollectionViewController() 

@end 

@implementation GrillGalleryCollectionViewController 
@synthesize scrollView,pageControl, colors; 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// colors=[[NSArray alloc]init]; 
    colors = [[NSArray alloc] init];; 

    [self getActiveOffers]; 
    // NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], nil]; 

} 

- (void)scrollViewDidScroll:(UIScrollView *)sender { 
    // Update the page when more than 50% of the previous/next page is visible 
    CGFloat pageWidth = self.scrollView.frame.size.width; 
    int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    self.pageControl.currentPage = page; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 



/* 
#pragma mark - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
} 
*/ 

- (IBAction)changePage:(id)sender { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 
    [self.scrollView scrollRectToVisible:frame animated:YES]; 
} 

- (IBAction)backBtnPressed:(id)sender { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    pageControlBeingUsed = NO; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    pageControlBeingUsed = NO; 
} 

- (void) getActiveOffers { 

    NSString *string = @"http://znadesign.com/appcenter/api.php?function=get_gallery&customer_id=1"; 
    NSLog(@"%@", string); 
    NSURL *url = [NSURL URLWithString:string]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    operation.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     int total_count = (int)[[responseObject valueForKey:@"total_count"] integerValue]; 
     if (total_count > 0) { 
      NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:total_count]; 
      for (int i = 1; i <= total_count; i++) { 
       NSString *key = [NSString stringWithFormat:@"%i", i]; 
       id object = [responseObject objectForKey:key]; 
       [array addObject:object]; 
      } 
      colors = [NSArray arrayWithArray:array]; 
      [self setSizeSliding]; 
      // [myTableView reloadData]; 
     } 
     else 
     { 
      UIAlertView *alertView2 = [[UIAlertView alloc] initWithTitle:@"There is no internet connection." 
                   message:nil 
                   delegate:nil 
                 cancelButtonTitle:@"OK" 
                 otherButtonTitles:nil]; 
      [alertView2 show]; 
     } 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

     // 4 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"There is no internet connection." 
                  message:[error localizedDescription] 
                  delegate:nil 
                cancelButtonTitle:@"Ok" 
                otherButtonTitles:nil]; 
     [alertView show]; 
    }]; 

    // 5 
    [operation start]; 

} 

-(void) setSizeSliding 
{ 
    for (int i = 0; i < colors.count; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     // UIView *subview = [[UIView alloc] initWithFrame:frame]; 
     // subview.backgroundColor = [colors objectAtIndex:i]; 
     // NSString *imageURLString=[[offersArray objectAtIndex:indexPath.row] valueForKey:@"picture"]; 

     NSString*slidingImage = [[colors objectAtIndex:i] valueForKey:@"picture"]; 
     NSURL *url = [NSURL URLWithString:slidingImage]; 
     NSData *data = [[NSData alloc] initWithContentsOfURL:url]; 
     UIImage *tmpImage = [[UIImage alloc] initWithData:data]; 

     UIImageView *slidingImageView = [[UIImageView alloc]initWithFrame:frame]; 
     slidingImageView.image = tmpImage; 
     [self.scrollView addSubview:slidingImageView]; 
    } 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * colors.count, self.scrollView.frame.size.height); 


} 
@end 

이 아래에 나열되어 나는이 비슷한 페이드 효과를 구현하려는 :

[UIView animateWithDuration:2 
         animations:^{imageView.alpha = 0.0;} 
         completion:^(BOOL finished){ [imageView removeFromSuperview];}]; 
+1

무슨 뜻인지 분명히 말하십시오. how why why –

+0

업데이트 된 질문을 참조하십시오. –

+0

분명히 미안합니다 ... 당신은 imageView가 어디에 있는지, 어떻게 얻었는지 설명 할 필요가 있습니다.이 코드에는 도움이 될만한 것이 없습니다. –

답변

0

당신은 코드는 아래의 코드를 추가하고 애니메이션 작품 여부를 시도 할 수 있습니다 ..

-(void) animateSubViews 
{ 
    int buffer = 10; 
    CGRect frame = CGRectMake((self.pageControl.currentPage * self.scrollView.frame.size.width)-buffer, 0, self.scrollView.frame.size.width + buffer, self.scrollView.frame.size.height); 
    [UIView animateWithDuration:0.4 
        animations:^{ 
          for (UIView *view in self.scrollView.subviews) 
          { 
          if (CGRectContainsRect(frame, view.frame)) 
          { 
           [view setAlpha:1.0]; 
          } 
          else 
          { 
           [view setAlpha:0.0]; 
          } 
          } 
        }]; 
} 

이 방법을 ScrollView에서 호출하면 페이지를 스크롤하고 변경했습니다.

- (IBAction)changePage:(id)sender { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 
    [self.scrollView scrollRectToVisible:frame animated:YES]; 

    //Call to animate 
    [self animateSubViews]; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{ 
    // Update the page when more than 50% of the previous/next page is visible 
    CGFloat pageWidth = self.scrollView.frame.size.width; 
    int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    self.pageControl.currentPage = page; 

    //Call to animate 
    [self animateSubViews]; 
}