UIPageControl

本文介绍了如何使用UIPageControl与UIScrollView实现图片滑动及缩放功能,详细讲解了通过target方法实现页面指示器与图片的联动,以及利用scrollView协议完成滑动时页面指示器同步更新的技术细节。

UIPageControl属性

1.属性比较简单,关键是target方法,实现和图片和page的关联

 self.page.numberOfPages = 7;
    // 还没有移动的点的颜色
    self.page.pageIndicatorTintColor = [UIColor redColor];
    // 当前点的颜色
    self.page.currentPageIndicatorTintColor = [UIColor yellowColor];
    [self.page addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
// page的方法
- (void)pageAction:(UIPageControl *)page{
//    NSLog(@"121212121");
//    NSLog(@"%ld", self.page.currentPage);
    // 偏移量
   self.scrollView.contentOffset = CGPointMake(WIDTH * self.page.currentPage, 0);
}
2.如果要实现滑动图片,page的点也会随着变化,需要在scrollView协议中实现

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
  self.page.currentPage = self.scrollView.contentOffset.x / WIDTH;
}
用UIScrollView实现缩放(用属性)

 // 设置最大的缩放比例
    self.scrollView.maximumZoomScale = 2;
    // 最小的缩放比例
    self.scrollView.minimumZoomScale = 0.5;
// 控制缩放的方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    UIView *view = scrollView.subviews[(NSInteger)scrollView.contentOffset.x / (NSInteger)WIDTH];
    // 只要进行缩放,系统就会修改scrollview的contentsize的值,所以当缩小之后,没有办法进行拖拽
    // 解决办法:在大的scrollerview上铺小的scrollerview,小的只负责进行缩放
    
    
    NSLog(@"%g", scrollView.contentSize.width);
    return view;
}
缩放时,系统会修改content size的值,所以缩小的时候没有办法进行拖拽

解决办法是在大的scrollView上铺小的scrollView

// 缩放
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
//    UIView *view = scrollView.subviews[(NSInteger) self.scrollView.contentOffset.x /(NSInteger)( WIDTH / 2)];
//    return view;
    UIImageView *imageView = [scrollView.subviews objectAtIndex:0];
//    NSLog(@"%@", scrollView.subviews);
    return imageView;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    if (self.scrollView.contentOffset.x == WIDTH / 2 * 10) {
        self.scrollView.contentOffset = CGPointMake(WIDTH / 2, 0);
    } else if (self.scrollView.contentOffset.x == 0){
        self.scrollView.contentOffset = CGPointMake(WIDTH / 2 * 9, 0);
    }
    self.page.currentPage = self.scrollView.contentOffset.x / (WIDTH / 2) - 1;
    // 滚动结束把视图缩放成原有大小
    for (UIScrollView *sView in scrollView.subviews) {
        if ([sView isKindOfClass:[UIScrollView class]]) {
            sView.zoomScale = 1.0;
            
        }
    }

}
以后可以直接拿来使用.记得设置小的scrollerview缩放的属性




  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值