2012-09-21 88 views
0

我試圖在UIScrollview中創建一個UIimages列表。當我水平實現它它工作的方式我想這樣的:UIScrollView中的垂直圖像

enter image description here

正如你看到的圖像粘在一起。

然後我試着垂直。它的工作原理,但圖像之間的不必要的空間,偏偏喜歡:

enter image description here

這是我的代碼:

@synthesize scrollView, pageControl; 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    pageControlBeingUsed = NO; 

    NSArray *pageImages = [NSArray arrayWithObjects: 
           [UIImage imageNamed:@"photo1.png"], 
           [UIImage imageNamed:@"photo2.png"], 
           [UIImage imageNamed:@"photo3.png"], 
           [UIImage imageNamed:@"photo4.png"], 
           [UIImage imageNamed:@"photo5.png"], 
           nil]; 

    for (int i = 0; i < pageImages.count; i++) { 
     CGRect frame; 
     //frame.origin.x = self.scrollView.frame.size.width * i; 
     //frame.origin.y = 0; 

     frame.origin.x = 0; 
     frame.origin.y = self.scrollView.frame.size.height * i; 

     frame.size = self.scrollView.frame.size; 

     UIImageView *newPageView = [[UIImageView alloc] initWithImage:[pageImages objectAtIndex:i]]; 
     newPageView.contentMode = UIViewContentModeScaleAspectFit; 
     newPageView.frame = frame; 
     [self.scrollView addSubview:newPageView]; 
    } 

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

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

    self.pageControl.currentPage = 0; 
    self.pageControl.numberOfPages = pageImages.count; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender { 
    if (!pageControlBeingUsed) { 
     // Switch the indicator when more than 50% of the previous/next page is visible 
     CGFloat pageWidth = self.scrollView.frame.size.height; 
     int page = floor((self.scrollView.contentOffset.y - pageWidth/2)/pageWidth) + 1; 

     //CGFloat pageWidth = self.scrollView.frame.size.width; 
     //int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 

     self.pageControl.currentPage = page; 
    } 
} 

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

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

- (IBAction)changePage { 
    // Update the scroll view to the appropriate page 
    CGRect frame; 
    frame.origin.x = 0; 
    frame.origin.y = self.scrollView.frame.size.height * self.pageControl.currentPage; 

// 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]; 

    // Keep track of when scrolls happen in response to the page control 
    // value changing. If we don't do this, a noticeable "flashing" occurs 
    // as the the scroll delegate will temporarily switch back the page 
    // number. 
    pageControlBeingUsed = YES; 
} 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
    self.scrollView = nil; 
    self.pageControl = nil; 
} 

- (void)dealloc { 
    [scrollView release]; 
    [pageControl release]; 
    [super dealloc]; 
} 

@end 
代碼

水平行代碼註釋。

你能幫我把這個不需要的空間去掉嗎?

+0

你的問題解決了.... :) – Rajneesh071

回答

1

這裏的圖像尺寸會造成問題。 檢查與此newPageView.contentMode = UIViewContentModeScaleAspectFill;代替newPageView.contentMode = UIViewContentModeScaleAspectFit;

+0

你檢查了答案嗎? –

+0

是的,我很感激。完善。 – Ali

1

編輯代碼

UIImageView *newPageView = [[UIImageView alloc] initWithImage:[pageImages objectAtIndex:i]]; 
     newPageView.contentMode = UIViewContentModeScaleAspectFit; // this statement is making your newPageView bigger then the image, hence spaces are coming when scrolling. !! 
     newPageView.frame = frame; 
     [self.scrollView addSubview:newPageView]; 

的這部分動態地創建視圖「newPageView」這樣的觀點與你的圖片的確切大小的。