2012-05-06 33 views

Trả lời

8

Cách tiếp cận chung là UIScrollView kích thước của một trong các hình ảnh, với kích hoạt phân trang.

Thêm những hình ảnh như subviews và thiết lập kích thước nội dung như thế này ...

NSArray *images; 
CGSize imageSize; 

self.scrollView.frame = CGRectMake(10,10,imageSize.width,imageSize.height); 
self.scrollView.contentSize = CGSizeMake(imageSize.width * images.count, imageSize.height); 
self.scrollView.pagingEnabled = YES; 

CGFloat xPos = 0.0; 

for (UIImage *image in images) { 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
    imageView.frame = CGRectMake(xPos, 0.0, imageSize.width, imageSize.width); 
    [self.scrollView addSubview:imageView]; 
    xPos += imageSize.width; 
    // assuming ARC, otherwise release imageView 
} 

Bạn cũng có thể tắt nảy, cuộn chỉ, vv tùy thuộc vào các chi tiết của các hiệu ứng mà bạn muốn.

+0

tôi đã thử nó, không chắc chắn nếu tôi sau đề nghị của bạn một cách chính xác, nó không hoạt động, scrollview giữ trống. Có lẽ tôi đang thiếu một cái gì đó vì tôi thiếu hiểu biết làm thế nào các đối tượng, sự kiện làm việc ... cảm ơn – Sweet

+0

câu trả lời này đã dẫn tôi đến liên kết đã giải quyết vấn đề của tôi: http://www.iosdevnotes.com/2011/03/uiscrollview- phân trang /. cảm ơn Danh, tôi đã bỏ phiếu và đánh dấu là đã trả lời – Sweet

1

Bạn chỉ có thể nhận được hướng swipe được sang trái hoặc phải với UISwipeGestureRecognizer như thế này

swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(detectSwipe:)]; 
[swipeGesture setNumberOfTouchesRequired:1]; 
[swipeGesture setDirection:UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionUp]; 
[appView addGestureRecognizer:swipeGesture]; 

Phương pháp detectSwipe tuyên bố cho xử lý về phía trước và lạc hậu để chơi với mảng UIImage. Bạn cũng có thể kiểm tra Apple's SimpleGestureRecognizers Demo

Hy vọng nó sẽ giúp bạn!

2

Bằng cách sử dụng UIScrollView và UIPageControl, kéo thả n UIScrollView và UIPageControl chắc chắn rằng họ không chồng chéo lên nhau, tạo IBOutlet của both.Set

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // 1 
imageArray = [NSArray arrayWithObjects: 
        [UIImage imageNamed:@"image2.jpg"], 
        [UIImage imageNamed:@"man-actor-Ashton-Kutcher-Wallpaper.jpg"], 
        [UIImage imageNamed:@"image1.jpg"], 
        [UIImage imageNamed:@"man-curl.jpg"], 
        [UIImage imageNamed:@"man-in-suit.jpg"], 
        nil]; 


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

    UIImageView *subview = [[UIImageView alloc] initWithFrame:frame]; 
    subview.image = [imageArray objectAtIndex:i]; 
    subview.contentMode = UIViewContentModeScaleAspectFit; 
    [self.scrollView addSubview:subview]; 
    } 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * imageArray.count, self.scrollView.frame.size.height); 
    pageControl.numberOfPages = imageArray.count; 
} 

- (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; 
} 
Các vấn đề liên quan