iOS学习笔记——滚动视图(scrollView)

滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性在程序中导入图片,在.m文件中的代码实现:推荐:http://www.cnblogs.com/roucheng

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性

@interface BoViewController : UIViewController<UIScrollViewDelegate>  
//滚动视图对象  
@property (retain, nonatomic) UIScrollView *scrollView;  
//视图中小圆点,对应视图的页码  
@property (retain, nonatomic) UIPageControl *pageControl;  
//动态数组对象,存储图片  
@property (retain, nonatomic) NSMutableArray *images;  
@end  
/* 何问起 hovertree.com */

在程序中导入图片,在.m文件中的代码实现:

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    //初始化scrollView  
    self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 345)];  
    //初始化pageControl  
    self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, 344, 320, 36)];  
    //初始化数组,存储滚动视图的图片  
    self.images = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"text1.png"],[UIImage imageNamed:@"text2.png"],[UIImage imageNamed:@"text3.png"],[UIImage imageNamed:@"text4.png"], nil nil];  
    //把scrollView与pageControl添加到当前视图中  
    [self.view addSubview:self.scrollView];  
    [self.view addSubview:self.pageControl];  
    //设置视图的背景颜色  
    self.view.backgroundColor = [UIColor blackColor];  
    //调用 setuoPage方法  
    [self setupPage:nil];     
}  
//改变滚动视图的方法实现  
- (void)setupPage:(id)sender  
{  
    //设置委托  
    self.scrollView.delegate = self;  
    //设置背景颜色  
    self.scrollView.backgroundColor = [UIColor blackColor];  
    //设置取消触摸  
    self.scrollView.canCancelContentTouches = NO;  
    //设置滚动条类型  
    self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;  
    //是否自动裁切超出部分  
    self.scrollView.clipsToBounds = YES;  
    //设置是否可以缩放  
    self.scrollView.scrollEnabled = YES;  
    //设置是否可以进行画面切换  
    self.scrollView.pagingEnabled = YES;  
    //设置在拖拽的时候是否锁定其在水平或者垂直的方向  
    self.scrollView.directionalLockEnabled = NO;  
    //隐藏滚动条设置(水平、跟垂直方向)  
    self.scrollView.alwaysBounceHorizontal = NO;  
    self.scrollView.alwaysBounceVertical = NO;  
    self.scrollView.showsHorizontalScrollIndicator = NO;  
    self.scrollView.showsVerticalScrollIndicator = NO;  
    //用来记录页数  
    NSUInteger pages = 0;  
    //用来记录scrollView的x坐标  
    int originX = 0;      
    for(UIImage *image in self.images)  
    {  
        //创建一个视图  
        UIImageView *pImageView = [[[UIImageView alloc]initWithFrame:CGRectZero]autorelease];  
        //设置视图的背景色  
        pImageView.backgroundColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0];  
        //设置imageView的背景图  
        [pImageView setImage:image];  
        //给imageView设置区域  
        CGRect rect = self.scrollView.frame;  
        rect.origin.x = originX;  
        rect.origin.y = 0;  
        rect.size.width = self.scrollView.frame.size.width;  
        rect.size.height = self.scrollView.frame.size.height;  
        pImageView.frame = rect;  
        //设置图片内容的显示模式(自适应模式)  
        pImageView.contentMode = UIViewContentModeScaleAspectFill;  
        //把视图添加到当前的滚动视图中  
        [self.scrollView addSubview:pImageView];  
        //下一张视图的x坐标:offset为:self.scrollView.frame.size.width.  
        originX += self.scrollView.frame.size.width;  
        //记录scrollView内imageView的个数  
        pages++;  
    }  
    //设置页码控制器的响应方法  
    [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];  
    //设置总页数  
    self.pageControl.numberOfPages = pages;  
    //默认当前页为第一页  
    self.pageControl.currentPage = 0;  
    //为页码控制器设置标签  
    self.pageControl.tag = 110;  
    //设置滚动视图的位置  
    [self.scrollView setContentSize:CGSizeMake(originX, self.scrollView.bounds.size.height)];      
}  
//改变页码的方法实现  
- (void)changePage:(id)sender  
{  
    NSLog(@"指示器的当前索引值为:%i",self.pageControl.currentPage);  
    //获取当前视图的页码  
    CGRect rect = self.scrollView.frame;  
    //设置视图的横坐标,一幅图为320*460,横坐标一次增加或减少320像素  
    rect.origin.x = self.pageControl.currentPage * self.scrollView.frame.size.width;  
    //设置视图纵坐标为0  
    rect.origin.y = 0;  
    //scrollView可视区域  
    [self.scrollView scrollRectToVisible:rect animated:YES];      
}  
#pragma mark-----UIScrollViewDelegate---------  
//实现协议UIScrollViewDelegate的方法,必须实现的  
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  
{  
    //获取当前视图的宽度  
    CGFloat pageWith = scrollView.frame.size.width;  
    //根据scrolView的左右滑动,对pageCotrol的当前指示器进行切换(设置currentPage)  
    int page = floor((scrollView.contentOffset.x - pageWith/2)/pageWith)+1;  
    //切换改变页码,小圆点  
    self.pageControl.currentPage = page;  
}  
  
- (void)didReceiveMemoryWarning  
{  
    [super didReceiveMemoryWarning];  
    // Dispose of any resources that can be recreated.  
}  
//释放创建的对象  
- (void)dealloc  
{  
    [_pageControl release];  
    [_scrollView release];  
    [super dealloc];  
}  /* 何问起 hovertree.com */

推荐:http://www.cnblogs.com/roucheng/p/3528371.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120297.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spring mvc 使用@notNull 注解验证请求参数

    spring mvc 使用@notNull 注解验证请求参数springmvc使用@notNull注解验证请求参数使用方式@NotNull@Min@valid验证生效进阶注解接口校验逻辑实现自定义注解使用处理请求时,有些参数是必传或者必须遵循某些规则的,如果针对每个请求都写一遍验证的话相当繁琐,而且代码维护起来也麻烦,正好框架将参数校验的功能抽象处理啊了,我们可以利用这个完成80%的校验场景使用方式使用起来很简单,只需要加上几…

  • 软件测试流程及规范[通俗易懂]

    软件测试流程及规范[通俗易懂]注:非通用标准流程,仅为大家提供参考。目标制定完整且具体的测试路线和流程,为快速、高效和高质量的软件测试提供基础流程框架。最终目标是实现软件测试规范化、标准化。测试流程说明流程图需求分析需求分析由SA制定,要求细化每一个功能的细节,每一个按钮的位置以及边界范围,对于稍大或稍复杂需求要求建模。(1)测试需求是制订测试计划的基本依据,只有确定了的测试需求才能够为测试计划提供客观依据;(2)测

  • Java集合类的使用

    Java集合类的使用Java集合类Collection,它是一个接口,他有两个子接口List和Map,Collection主要方法booleanadd(Ee);booleanaddAll(Collection<?extendsE>c);booleanremove(Objecto);booleanremoveAll(Collection<?>c);voidclear();intsize();booleanisEmpty();booleancon

  • matlab画图标签,Matlab绘图[通俗易懂]

    matlab画图标签,Matlab绘图[通俗易懂]要使用plot函数来绘制图形,需要执行以下步骤:通过指定要绘制函数的变量x的值的范围来定义x。定义函数,y=f(x)调用plot命令,如下:plot(x,y)以下示例将演示该概念。下面绘制x的值范围是从0到100,使用简单函数y=x,增量值为5。创建脚本文件并键入以下代码-x=[0:5:100];y=x;plot(x,y)执行上面示例代码,得到以下结果-下面再来一个例子来绘制…

  • adni数据集简介_ADP数据

    adni数据集简介_ADP数据ADNI数据和样例

  • 正则表达式详细讲解篇

    正则表达式详细讲解篇

    2021年11月11日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号