文档章节

ios UIScrollView UIPageControl

烦恼豆浆粉
 烦恼豆浆粉
发布于 2014/08/19 18:32
字数 449
阅读 127
收藏 0

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


© 著作权归作者所有

烦恼豆浆粉
粉丝 2
博文 13
码字总数 6094
作品 0
北碚
私信 提问
UI_07 UIScrollView、UIPageControl

⼀、UIScrollView的常⽤属性 UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容。UIScrollView是所有滚动视图的基类。 1、UIScrollView核⼼功...

黑伞将军
2015/08/24
134
0
如何将UIPageControl作为 UIViewController的容器

虽然看上去用 UIPageControl 在一系列 UIView或UIViewController中导航是很平常的事情,但实际上 Apple公司并没有提供一个这样的方法或者演示Demo: 在最新的iOS版本中(5.0 现在已经不是最新的...

junwong
2012/07/18
4.1K
2
如何将UIPageControl作为 UIViewController的容器

虽然看上去用 UIPageControl 在一系列 UIView或UIViewController中导航是很平常的事情,但实际上Apple公司并没有提供一个这样的方法或者演示Demo: 在最新的iOS版本中(5.0 现在已经不是最新的...

彭博
2012/11/27
596
0
IOS开发系列--无限循环的图片浏览器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/47753201 --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在...

KenshinCui
2015/08/18
0
0
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突

一、前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollView,UIScrollView上有UISlider。俺直接在之前的示例Demo上演示,简书地址:iOS 自定...

且行且珍惜_iOS
2018/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
12
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部