iOS_9_scrollView分页

最后效果图:

BeyondViewController.h

//
//  BeyondViewController.h
//  8_scrollVIew分页浏览
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BeyondViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end

BeyondViewController.m

//
//  BeyondViewController.m
//  8_scrollVIew分页浏览
/*
    下面代码存在性能问题,仅作为新特性介绍界面使用
    不可作为图片浏览器~
    1,一次性生成8个ImageView会存在性能问题,解决方法:使用3个ImageView(或2个ImageView)
    2,另外,循环播放还没实现
 */
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondViewController.h"
// 图片总张数
#define kImgCount 8
@interface BeyondViewController ()<UIScrollViewDelegate>
{
    // 分页条码指示控制器
    UIPageControl *_pageControl;
}

@end

@implementation BeyondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// 调用自己定义方法
    [self scrollViewWithPage];
}

// 带分页功能的scrollView
- (void)scrollViewWithPage
{

    // 1,设置scrollView的可视大小,内容大小,等属性
    _scrollView.frame = self.view.bounds;
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.showsVerticalScrollIndicator = NO;
    _scrollView.bouncesZoom = NO;
    _scrollView.bounces = NO;
    // 设置代码,监听滚动完成的事件
    _scrollView.delegate = self;

    // 2,创建8个UIImageView,加入到scrollView
    // 每一个图片宽,高
    CGFloat imgW = self.view.bounds.size.width;
    CGFloat imgH = self.view.bounds.size.height;
    for (int i=0; i<kImgCount; i++) {
        // UIImageView
        // 图片名:01.jpg ~ 07.jpg
        NSString *imgName = [NSString stringWithFormat:@"0%d.png",i+1];
        UIImageView *imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imgName]];
        // 假设保持imageView里面的image不变形
        //设置UIImageView的对象的下面两个属性,能够图片不变形且充满图片框为前提进行填充。
        imgView.clipsToBounds = YES;
        imgView.contentMode = UIViewContentModeScaleAspectFill;
        // y是0,x是一张连着一张
        imgView.frame = CGRectMake(i*imgW, 0, imgW, imgH);
       // 将全部的图片加入到scrollView
        [_scrollView addSubview:imgView];
    }

    // 3,这个最重要,是滚动区域
    // _scrollView.contentSize = CGSizeMake(kImgCount*imgW, imgH);
    // 0代表高度方向不滚动
    _scrollView.contentSize = CGSizeMake(kImgCount*imgW, 0);
    // 按scrollView的宽度分页
    _scrollView.pagingEnabled = YES;

    // 4,pageControl分页指示条
    _pageControl = [[UIPageControl alloc]init];
    // pageControl分页指示条的中心点在底部中间
    _pageControl.numberOfPages = kImgCount; //这个最重要
    _pageControl.center = CGPointMake(imgW*0.5, imgH-20);
    _pageControl.bounds = CGRectMake(0, 0, 150, 15);
    _pageControl.pageIndicatorTintColor = [UIColor grayColor];
    _pageControl.currentPageIndicatorTintColor = [UIColor redColor];
    _pageControl.enabled = NO; //取消其默认的点击行为
    [self.view addSubview:_pageControl];

}
/*
    在这种方法里面,能够进行性能优化,由于时时在监听滚动,从而随时进行3个UIImageView的拼接,甚至可精简到仅仅有2个UIImageView进行动态拼接
 */
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // scrollView的contentOffset是最重要的属性,点,x,y记录的是滚动的距离,相对的是scrollView的可视界面的左上角的距离
    CGPoint offset = scrollView.contentOffset;

    int curPageNo = offset.x / _scrollView.bounds.size.width;
    _pageControl.currentPage = curPageNo ;

}

@end

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-10 01:58:07

iOS_9_scrollView分页的相关文章

python__Django 分页

自定义分页的类: #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by Mona on 2017/9/20 from django.utils.safestring import mark_safe class Paginator: ''' 页码的格式依赖于bootstrap: 使用案例: from django.shortcuts import render,redirect,HttpResponse from app01.mod

ajax+分页

<!DOCTYPE html><html><head lang="zh-cn"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><meta http-equiv="X-UA-Compat

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

优化LIMIT分页

在系统中需要分页的操作通常会使用limit加上偏移量的方法实现,同时加上合适的order by 子句.如果有对应的索引,通常效率会不错,否则MySQL需要做大量的文件排序操作. 一个非常令人头疼问题就是当偏移量非常大的时候,例如可能是limit 10000,20这样的查询,这是mysql需要查询10020条然后只返回最后20条,前面的10000条记录都将被舍弃,这样的代价很高.如果所有的页面被访问的频率相同,那么这样的查询平均需要访问半个表的数据.要优化这样的查询,要么实在页面中限制分页的数量,

Ajax实现无刷新分页

注:本文中使用到的一些类库在前面文章都能找到源代码,我会在文中指明链接所在,为了缩短文章篇幅,由此带来的阅读不便,敬请谅解. 本文讲解 Ajax 实现无刷新分页.实现原理.代码展示.代码下载. 这里需要说明一些知识: 1.Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态: 2.那么,Ajax 无刷新页面是运行在动态页面(.PHP)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面: 3.实现原理

关于分页SQL的小总结

findPage 和findPageTotal条件分页中的条件 较为复杂点的关联查询 有取别名的 <select id="findPage" resultMap="MinOrderInfo" parameterType="map"> SELECT o.*,w.name buyName,w.MOBILE buyMobile,aa.name sellName,aa.MOBILE sellMobile,rs.CAR_BRAND_NAME c

webform:分页组合查询

一个简单的分页组合查询页面 /// <summary> /// 查询方法 /// </summary> /// <param name="tsql">SQL语句</param> /// <param name="hh">哈希表</param> /// <returns></returns> public List<Goods> Select(string un

TODO:数据库优化之分页

本文的例子是以MongoDB数据库为准,其它数据库各位也可以举一反三进行优化. 在MongoDB中分页使用 a.skip(n)跳过前n个匹配的文档: b.limit(m)返回m个结果,要是匹配的结果不到m个,则返回匹配数据量的结果,m是指定上限数量,而不是下限数量: c.sort({"name": 1,"address":-1}),1表示升序,-1表示降序. 使用skip跳过少量的文档还可以.但是数据量非常多的话,skip就会变得非常慢,每个数据库都会有这种情况,所

WebForm 分页与组合查询

1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> list = new List<Subject>(); cmd.CommandText = "select *from Subject where SubjectName like @a "; cmd.Parameters.Clear(); cmd.Parameters.Add