2014-02-13 2 views
1

Это моя функция UIScrollView, я отобразил 7 изображений из 39 на одной странице. Он работает, но я хочу отобразить и изменить UIPageControl.Как добавить UIPageControl в UIScrollView

- (void)layoutScrollImages{ 
    UIImageView *view = nil; 
    NSArray *subviews = [scrollView1 subviews]; 

    curXLoc = 0; 
    for (view in subviews) 
    { 
    if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
    { 
     CGRect frame = view.frame; 
     frame.origin = CGPointMake(curXLoc, 0); 
     view.frame = frame; 

     curXLoc += (kScrollObjWidth); 

    } 
} 

// set the content size so it can be scrollable 
[scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)]; 
} 

- (void)viewDidLoad { 

    kScrollObjHeight = 172.0; 
    kScrollObjWidth = 146.0; 
    kNumImages  = 39; 
    scrollView1=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 596, 1022, 172)]; 

    scrollView1.showsVerticalScrollIndicator=YES; 
    scrollView1.userInteractionEnabled=YES; 
    [self.view addSubview:scrollView1]; 

    self.view.backgroundColor = [UIColor whiteColor]; 
    [scrollView1 setBackgroundColor:[UIColor whiteColor]]; 
[scrollView1 setCanCancelContentTouches:NO]; 
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite; 

scrollView1.clipsToBounds = NO; 
scrollView1.scrollEnabled = YES; 
scrollView1.pagingEnabled = YES; 

    NSUInteger j; 
for (j = 1; j <= kNumImages; j++) 
{ 
    NSString *imageName = [NSString stringWithFormat:@"thumb_%lu.png",(unsigned long)j]; 
    image = [UIImage imageNamed:imageName]; 
    imageView = [[UIImageView alloc] initWithImage:image]; 

    CGRect rect = imageView.frame; 
    rect.size.height = kScrollObjHeight; 
    rect.size.width = kScrollObjWidth; 
    imageView.frame = rect; 
    imageView.tag = j; // tag our images for later use when we place them in serial fashion 

    [scrollView1 addSubview:imageView]; 
} 

    pageCtrl = [[UIPageControl alloc] init]; 
    pageCtrl.frame = CGRectMake(-130, CGRectGetMidY(self.view.bounds)+25, 1024, 100); 
    [pageCtrl setNumberOfPages:5]; 
    pageCtrl.currentPage = 0; 
    pageCtrl.pageIndicatorTintColor = [UIColor lightGrayColor]; 
    pageCtrl.currentPageIndicatorTintColor = [UIColor blackColor]; 
    [self.view addSubview:pageCtrl]; 
} 

Как я могу использовать UIPageControl здесь?

ответ

2

Add Target для управления Страница типа следующим образом,

[pageControl addTarget:self action:@selector(onPageControlPageChanged:) forControlEvents:UIControlEventValueChanged]; 

тогда

- (void)onPageControlPageChanged:(UIPageControl *)pageControl_ { 

    int offsetX = pageControl_.currentPage * kScrollObjWidth; 

    CGPoint offset = CGPointMake(offsetX, 0); 

    [scrollView setContentOffset:offset animated:YES]; 
} 

.

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView_ { 

    int page = scrollView.contentOffset.x/scrollView.frame.size.width; 
    pageCtrl.currentPage = page; 
} 
+0

как я могу изменить управление страницы при прокрутке вид прокрутки – user3069029

+0

да что может быть сделано в методе делегата Scrollview – Venkat

+0

могли бы вы показать мне сценарий о делегат делегата прокрутки – user3069029

0

на - (void)scrollViewDidScroll:(UIScrollView *)scrollView; Вы считаете CurrentPage и установить как

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    pageCtrl.currentPage = (int)(self.scrollView.contentOffset.x/kScrollObjWidth); 
    } 
Смежные вопросы