ios UIScrollView UIPageControl

1、UIScrollViewatom

1.contentSize:UIScrollView可滾動的範圍代理

    [self.scroll setContentSize:CGSizeMake((KNumberOfPages + 2) * imageWidth, imageHeight)];

2.contentOffset:UIScrollView原點在contentSize上的位置code

    self.scroll.contentOffset = CGPointMake(imageWidth, 0);

3.contentInset:UIScrollView四周的擴展範圍orm

4.PagingEnabled:是否有分頁效果圖片

    [self.scroll setPagingEnabled:YES];

5.scrollEnabled:是否有滾動效果get

    [self.scroll setScrollEnabled:YES];

5.showsHorizontalScrollIndicator:是否顯示水平滾動條animation

    [self.scroll setShowsHorizontalScrollIndicator:YES];

6.bounces:是否有彈簧效果string

    [self.scroll setBounces:NO];

7.縮放:1.設置代理<UIScrollViewDelegate>it

             2.設置最大、最小縮放比例io

    self.myScrollerView.minimumZoomScale = 0.5;
    self.myScrollerView.maximumZoomScale = 2;

             3.實現縮放代理方法,指定縮放的子視圖

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{}


2、UIPageControl

注:必定要用initWithFrame初始化,否則不能換頁

1.numberOfPages設置頁數

    [self.pageControl setNumberOfPages:KNumberOfPages];

2.currentPage設置當前頁

    [self.pageControl setCurrentPage:0];

3.pageIndicatorTintColor設置普通頁指示器的顏色

    [self.pageControl setPageIndicatorTintColor:[UIColor blackColor]];

4.currentPageIndicatorTintColor設置當前頁指示器的顏色


小例子:實現5張圖片的循環滾動

#define KNumberOfPages 5

@interface ViewController ()

@property (nonatomic, strong) UIScrollView *scroll;
@property (nonatomic, strong) NSMutableArray *imageArray;
@property (nonatomic, strong) UIPageControl *pageControl;

@end

@implementation ViewController
            
- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.imageArray = [NSMutableArray array];
    CGFloat imageWidth = self.view.frame.size.width;
    CGFloat imageHeight = self.view.frame.size.height;
    
    self.scroll = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    [self.scroll setPagingEnabled:YES];
    [self.scroll setBounces:NO];
    [self.scroll setShowsHorizontalScrollIndicator:YES];
    [self.scroll setContentSize:CGSizeMake((KNumberOfPages + 2) * imageWidth, imageHeight)];

    [self.imageArray addObject:[UIImage imageNamed:@"5.jpg"]];
    for (NSInteger i = 0; i < KNumberOfPages; i++) {
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", i + 1]];
        [self.imageArray addObject:image];
    }
    [self.imageArray addObject:[UIImage imageNamed:@"1.jpg"]];
    NSLog(@"%@", self.imageArray);
    
    for (NSInteger i = 0; i < KNumberOfPages + 2; i++) {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * imageWidth, 0, imageWidth, imageHeight)];
        
        imageView.image = self.imageArray[i];
        [self.scroll addSubview:imageView];
    }
    
    self.scroll.contentOffset = CGPointMake(imageWidth, 0);
    
    self.scroll.delegate = self;

    [self.view addSubview:self.scroll];
    
    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 400, 320, 440)];//不這樣初始化就沒法點擊
    [self.pageControl setCenter:CGPointMake(160, 420)];
    [self.pageControl setNumberOfPages:KNumberOfPages];
    [self.pageControl setCurrentPage:0];
    [self.pageControl setPageIndicatorTintColor:[UIColor blackColor]];
    [self.pageControl addTarget:self action:@selector(pageDidClicked) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:self.pageControl];
}

- (void)pageDidClicked{
    [self.scroll setContentOffset:CGPointMake((self.pageControl.currentPage + 1) * 320, 0) animated:YES];
}

//結束減速
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    if (self.scroll.contentOffset.x == 0) {
        [self.scroll setContentOffset:CGPointMake(KNumberOfPages * 320, 0)];
    }else if (self.scroll.contentOffset.x == (KNumberOfPages + 1) * 320){
        [self.scroll setContentOffset:CGPointMake(320, 0)];
    }
    [UIView animateWithDuration:0.5 animations:^{
        NSInteger number = self.scroll.contentOffset.x / 320;
        self.pageControl.currentPage = number - 1;
    }];
}

@end
相關文章
相關標籤/搜索