2012-10-25 23 views
8

Tôi đang cố tạo ứng dụng thực hành để tôi có thể cuộn hình ảnh bằng điều khiển trang. Tôi có thể cuộn hình ảnh và có thể bao gồm điều khiển trang. Nhưng vấn đề tôi phải đối mặt là tôi không thể liên kết hai. Có nghĩa là để nói khi tôi cuộn hình ảnh, điều khiển trang không bị ảnh hưởng và khi tôi thay đổi điều khiển trang, việc cuộn hình ảnh không bị ảnh hưởng.Quét ảnh bằng điều khiển trang trong Iphone

Tôi đã gọi điều này: http://www.iosdevnotes.com/2011/03/uiscrollview-paging/ để cuộn bằng điều khiển trang.

Viewcontroller.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController <UIScrollViewDelegate>{ 
    UIScrollView *scrollView; 
    UIPageControl *pageControl; 

    BOOL pageControlBeingUsed; 
} 

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView; 
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl; 

- (IBAction)changePage; 

@end 

Viewcontroller.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize scrollView,pageControl; 

- (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.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; 
} 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSArray *images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.jpeg"],[UIImage imageNamed:@"2.jpeg"],[UIImage imageNamed:@"3.jpeg" ], nil]; 

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

    for (int i = 0; i < images.count; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     UIImageView* imgView = [[UIImageView alloc] init]; 
     imgView.image = [images objectAtIndex:i]; 
     imgView.frame = frame; 
     [scrollView addSubview:imgView]; 
    } 

    self.pageControl.currentPage = 0; 
    self.pageControl.numberOfPages = images.count; 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
    self.scrollView = nil; 
    self.pageControl = nil; 
} 

- (IBAction)changePage{ 
     // update the scroll view to the appropriate page 
     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]; 
     pageControlBeingUsed = YES; 
} 

@end 

Cần một số hướng dẫn về vấn đề này ... Cảm ơn ..

Trả lời

3

Kiểm tra xem bạn đã thiết lập các đại biểu về quan điểm cuộn đến ViewController

Và bạn vừa đặt trangControlBeingUsed to YES hoặc NO và bạn đã không sử dụng nó bất cứ nơi nào trong ViewController

+0

nơi để sử dụng nó? có thể cho tôi một ý tưởng về nơi để sử dụng nó? – lakesh

+0

thay đổi mã ngay bây giờ ... bao gồm các pageControlBeingUsed trong chức năng scrollViewDidScroll .. vẫn không có sự khác biệt ... – lakesh

+0

xin lỗi ... thiết lập đại biểu của tôi sai .. cảm ơn sự giúp đỡ ... – lakesh

4

Tôi đã học được kiểm soát trang và scrollview từ hướng dẫn này, nó được viết rất rõ ràng, hy vọng nó giúp bạn http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content

+1

tôi đã tạo ứng dụng thực hành mới theo hướng dẫn và nó không hoạt động ... – lakesh

+0

cùng một vấn đề với mã mới? –

+0

ya ... nếu cần thiết, tôi có thể bắt đầu câu hỏi mới cho ... – lakesh