iOS开发:加载、滑动翻阅大量图片解决方案详解

今天分享一下私人相册中,读取加载、滑动翻阅大量图片解决方案,我想强调的是,编程思想无关乎平台限制。

我要详细说一下,在缩略图界面点击任意小缩略图后,进入高清大图全屏浏览界面的这短暂的1秒内(和后续的几秒),都发生了什么。

开发:加载、滑动翻阅大量图片解决方案详解-">

常规思路流程

点击任意小图后,

1.首先制作scrollview框架:大小2个scrollview,小的用于手势缩放单一图片,大的横向依次加载全部照片

2.制作好scrollview框架后,加载照片

3.一切准备就绪跳转页面呈现给用户选择的大图

加载图片这一步,若相册内就10几张照片,那么毫无技术挑战,但是如果是300张照片呢?直接崩溃?还是让用户等待加载? 时间紧任务重,这一步需要拆分和优化.

scrollview框架需要了解下API,然后动动脑子了,这里有个小窍门,很多人都问我照片与照片间的黑边间距怎么实现,呵呵,贴下代码:

#define PADDING  20
- (NSInteger)loadPhotos
{
    //清理之前照片
    for (UIView *v in [_scrollView subviews]) {
        [v removeFromSuperview];
    }    

    workingFrame = [[UIScreen mainScreen]bounds];
    workingFrame.origin.x = PADDING;    

    for (int i = 0; i < int_total; i++) {
        CGRect frame = workingFrame;
        WQPhoto *photoView = [[WQPhoto alloc] initWithFrame:frame];
        [photoView setScroller:self];
        [photoView setIndex:i];    

        WQAlbumPhoto *photo = [albumObject._photos objectAtIndex:i];
        [photo cleanThumbnail];
        if (i == int_current) {
    //加载原图
            [photoView setImage:photo.oriImage];
            [photoView setIsLoad:YES];
        }else if (int_current - 10 < i && i < int_current + 10){
    //加载左右临近的缩略图
            [photoView setImage:photo.thumbnail4view];
        }    

        [_scrollView addSubview:photoView];
        workingFrame.origin.x = workingFrame.origin.x + 2 * PADDING
+ workingFrame.size.width;
    }    

    //实现可滚动
    [_scrollView setContentSize:CGSizeMake(workingFrame.origin.x, workingFrame.size.height / 2)];
    [_scrollView setContentOffset:CGPointMake(360 * int_current, 0)];
    //加载其余缩略图
    loadThread = [[NSThread alloc]initWithTarget:self selector:@selector(loadImages) object:nil];
    return 0;
}

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索图片
, scrollviewer
, scrollview
, ios 滑动返回
, 照片
, mainscreen
, ios swift scrollview
, photoview
, 滑动加载
, scrollview安卓开发
, 大图
, scrollview滑动冲突
, 图片加载框架
iOS点击查看大图
,以便于您获取更多的相关知识。

时间: 2024-09-20 00:30:54

iOS开发:加载、滑动翻阅大量图片解决方案详解的相关文章

IOS开发中NSURL的基本操作及用法详解_IOS

NSURL其实就是我们在浏览器上看到的网站地址,这不就是一个字符串么,为什么还要在写一个NSURL呢,主要是因为网站地址的字符串都比较复杂,包括很多请求参数,这样在请求过程中需要解析出来每个部门,所以封装一个NSURL,操作很方便. 1.URL URL是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它. URL可能包含远程服务器上的资源的位置,本地磁盘上的文件的路径,甚

JavaScript前端图片加载管理器imagepool使用详解_基础知识

前言       imagepool是一款管理图片加载的JS工具,通过imagepool可以控制图片并发加载个数.       对于图片加载,最原始的方式就是直接写个img标签,比如:<img src="图片url" />.       经过不断优化,出现了图片延迟加载方案,这回图片的URL不直接写在src属性中,而是写在某个属性中,比如:<img src="" data-src="图片url" />.这样浏览器就不会自动

Win8中启动无加载项的IE10浏览器详解

但是到了 Windows 8 系统下,由于取消了开始菜单,我们要一次性的启动无加载项模式的方法好像没用了,这里我们在教大家一个方法,可以在 Windows 8 下快速启动IE10该模式. 那就是直接打开 Modern 版本的 IE10,该版本下 IE 默认就是不支持加载项的,仅支持 Flash 加载项.如果你想让桌面版 IE 启动无加载项模式,那就试试下面的方法: 按下"Windows + R"键打开运行,然后再输入框中输入 iexplore.exe -extoff 按下回车键即可启动

jQuery实现滚动展开(加载)更多内容方法详解

php代码    代码如下 复制代码 function wppress_json(){//滚动的时候加载     $wp = M('Wppress');     $input = $_GET['page'];     $start = $input*15;     $list = $wp->limit("$start,15")->order("time desc")->select();     //$list['time']=1;        

ios异步加载表格数据及内容不能及时显示的问题

异步事件,就是说这一个代码或者代码块,并不会阻塞程序的运行,程序会立即执行下一条语句,而这条语句,会在相应的方法调用结束之后,执行它自身的回调函数发送一些信号,来表明这个异步事件完成.就像你约会提前1小时到见面地点,先去买点东西踩点什么的(--),等GF/BF到了之后短信通知你,你就立即回来.而不是一直在原地等到对方过来(--) 最早使用异步开发,是在使用JavaScript来开发Web前端的时候,XMLHttpRequest或者jQuery的$.ajax中,都会用到回调函数,来指明成功或者失败

ios webview加载本地文件时崩溃

问题描述 ios webview加载本地文件时崩溃 加载本地一个docx格式的文件,程序崩溃,exc_bad_access 完全没有异常信息 解决方案 http://www.lxway.com/884821684.htm 解决方案二: 至少要上一下给我们代码看看嘛 解决方案三: iOS webView 加载文件 及 文件操作iOS中webview加载本地html文件iOS webview 加载html 乱码

ae开发加载中的问题-AE中添加shp文件的问题!

问题描述 AE中添加shp文件的问题! 这段代码有问题吗?可以生成解决方案,但是还是不能加载shp文件啊.报错显示 开发加载中的问题-AE中添加shp文件的问题!-ae开发添加比例尺"> using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Tex

js-求教IOS webview加载html遇到的问题

问题描述 求教IOS webview加载html遇到的问题 项目中需要加载远程html但是发现一旦执行了style.display=block之后js控制会失效,求各位大神指点 解决方案 http://blog.csdn.net/u013243469/article/details/41084855看看这个博客能帮带你吗 解决方案二: 楼主 页面直接通过手机浏览器 访问的话 也会失效么

OpenGL ES 在iOS平台加载3dmax导出的obj模型

OpenGL ES 在iOS平台加载3dmax导出的obj模型 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以下注释部分涉及到文件按行读取与块的使用. 关于obj文件格式,后续补充,需要说明