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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 死链处理的详细步骤[通俗易懂]

    死链处理的详细步骤[通俗易懂]死链处理:查找死链;收集死链;提交处理  一:查找死链  1.工具检测,在360极速浏览器的拓展中心下载安装检查网页死链的插件,可以查找当前网页的死链  2.直接点击页面查找死链  3.网站日志分析查找死链,去空间商后台下载IIS。  4.百度站长平台里面有个链接分析,也可以查看  二:收集死链  1.建一个TXT文

    2022年7月22日
    13
  • java中递归算法_java中递归算法是什么怎么算的?

    java中递归算法_java中递归算法是什么怎么算的?展开全部一、递归算法基本思路:Java递归算法是基于Java语言实现的递归算法。递归算法是一e5a48de588b662616964757a686964616f31333363373166种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思…

    2022年7月9日
    14
  • 0xFFFFFFFF 为什么表示-1

    0xFFFFFFFF 为什么表示-1负数的补码是:原码按位取反再加一逆序求原码:-1的补码是FFFF=1111111111111111减一:1111111111111110按位取反(除符号位):1000000000000001最高位1表示符号位,"0"表示正数"1"表示负数=========补充原码是不用求的。原码就是没有修改过的嘛。对于signedin…

    2022年5月13日
    71
  • Laravel 中config的用法

    Laravel 中config的用法

    2021年10月23日
    38
  • Ubuntu 20.04 LTS上安装Edge浏览器

    Ubuntu 20.04 LTS上安装Edge浏览器文章目录Ubuntu20.04LTS上安装Edge浏览器Ubuntu20.04LTS上安装Edge浏览器本文部分内容转载自:HowtoInstallMicrosoftEdgeBrowseronUbuntu20.04|Linuxize,亲自安装测试并验证。Edge浏览器在各主要OS上均有正式版本发布,但是在Ubuntu上没有一个正式发布的版本。在Ubuntu上打开DownloadMicrosoftEdgeBrowser|Microsoft网页上看到不支持Ubuntu系

    2022年7月21日
    26
  • nodejs安装后没有npm(nodejs和npm)

    如下命令便可以实现该目的:#apt-get卸载sudoapt-getremove–purgenpmsudoapt-getremove–purgenodejssudoapt-getremove–purgenodejs-legacysudoapt-getautoremove#手动删除n…

    2022年4月10日
    877

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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