ios UIScrollView UIPageControl

一、UIScrollView

1.contentSize:UIScrollView可滚动的范围

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

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

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

3.contentInset:UIScrollView四周的扩展范围

4.PagingEnabled:是否有分页效果

    [self.scroll setPagingEnabled:YES];

5.scrollEnabled:是否有滚动效果

    [self.scroll setScrollEnabled:YES];

5.showsHorizontalScrollIndicator:是否显示水平滚动条

    [self.scroll setShowsHorizontalScrollIndicator:YES];

6.bounces:是否有弹簧效果

    [self.scroll setBounces:NO];

7.缩放:1.设置代理<UIScrollViewDelegate>

             2.设置最大、最小缩放比例

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

             3.实现缩放代理方法,指定缩放的子视图

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


二、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


转载于:https://my.oschina.net/u/1999967/blog/304472

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值