@interface AsyncImageView: UIView {
NSURLConnection * connection;
NSMutableData * data;
}
@end
@implementation AsyncImageView
- (void) loadImageFromURL: (NSURL * ) url {
if (connection != nil) {
[connection release];
}
if (data != nil) {
[data release];
}
NSURLRequest * request = [NSURLRequest requestWithURL: url
cachePolicy: NSURLRequestUseProtocolCachePolicy
timeoutInterval: 60.0];
connection = [
[NSURLConnection alloc]
initWithRequest: request delegate: self];
//TODO error handling, what if connection is nil?
}
- (void) connection: (NSURLConnection * ) theConnection
didReceiveData: (NSData * ) incrementalData {
if (data == nil) {
data = [
[NSMutableData alloc] initWithCapacity: 2048];
}[data appendData: incrementalData];
}
- (void) connectionDidFinishLoading: (NSURLConnection * ) theConnection {
[connection release];
connection = nil;
if ([
[self subviews] count] & gt; 0) {
[
[
[self subviews] objectAtIndex: 0] removeFromSuperview];
}
UIImageView * imageView = [
[
[UIImageView alloc] initWithImage: [UIImage imageWithData: data]] autorelease];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth || UIViewAutoresizingFlexibleHeight);
[self addSubview: imageView];
imageView.frame = self.bounds;
[imageView setNeedsLayout];
[self setNeedsLayout];
[data release];
data = nil;
}
- (UIImage * ) image {
UIImageView * iv = [
[self subviews] objectAtIndex: 0];
return [iv image];
}
- (void) dealloc {
[connection cancel];
[connection release];
[data release];
[super dealloc];
}
@end
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"ImageCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]
autorelease];
} else {
AsyncImageView* oldImage = (AsyncImageView*)
[cell.contentView viewWithTag:999];
[oldImage removeFromSuperview];
}
CGRect frame;
frame.size.width=75; frame.size.height=75;
frame.origin.x=0; frame.origin.y=0;
AsyncImageView* asyncImage = [[[AsyncImageView alloc]
initWithFrame:frame] autorelease];
asyncImage.tag = 999;
NSURL* url = [imageDownload
thumbnailURLAtIndex:indexPath.row];
[asyncImage loadImageFromURL:url];
[cell.contentView addSubview:asyncImage];
return cell;
}
分享到:
相关推荐
标题“iPhone移动卡开启个人热点”涉及到的是iPhone设备上如何激活并使用个人热点功能,这一功能允许iPhone将网络连接共享给其他设备,如电脑或平板电脑。个人热点通常通过Wi-Fi、蓝牙或USB数据线来提供网络连接。...
《iPhone移动商城与Mint-UI移动开发详解》 在当今的移动互联网时代,iOS平台上的应用程序开发一直是开发者关注的焦点。本篇文章将深入探讨基于iPhone的移动商城应用开发,特别是利用Mint-UI这一流行的前端框架进行...
8. **性能优化**:理解预加载策略,提前加载即将展示的图片,避免在切换时出现延迟。 通过深入学习这些知识点,并参考提供的代码分析,开发者可以构建出具有iPhone风格的图片切换效果,提供流畅且美观的用户体验。
6. **图片懒加载**:优化性能,可以考虑使用懒加载技术,只有当图片进入视口时才加载,减少页面初始化时的数据传输量。 7. **响应式设计**:确保在不同分辨率和设备上都能正常工作,可能需要利用媒体查询(media ...
### iPhone4S、iPhone5 设置移动 cmWap 接入点详解 #### 一、引言 随着智能手机的普及和技术的发展,人们对移动互联网的需求日益增长。对于早期的 iPhone 用户而言,如何合理利用套餐内的流量成为了关注的重点之一...
"jquery 图片放大镜仿iphone苹果手机图片文字放大查看效果"正是这样一种技术实现,它模拟了iPhone手机上查看图片时的放大体验,让用户在网页上也能享受到类似的操作感。 jQuery是一个轻量级、高性能的JavaScript库...
1. 使用懒加载:仅在用户滚动到可见区域时加载图片,减少初次加载时间。 2. 压缩和缩小资源:减小CSS、JavaScript和图片文件大小,提高加载速度。 3. 使用Service Worker:离线缓存策略,即使在无网络连接的情况下也...
当我们需要将iPhone上的PNG图片拷贝到电脑并进行处理时,可能会遇到一些兼容性问题,特别是对于Windows系统来说,有时可能无法直接识别某些特定的PNG文件。本文将详细讲解如何解析iPhone拷贝到电脑的PNG图片,并将其...
在Web应用中,有时我们需要模拟原生移动设备的一些特性,比如在网页上展示可用的WiFi网络,以提供更接近于原生应用的用户体验。这个话题就是探讨如何利用jQuery实现这一目的。 【描述】:描述中的“81、jQuery模拟...
《iPhone应用程序编程指南》作为指导书籍,提供了构建iPhone应用程序所需的知识,包括但不限于用户界面设计、应用生命周期管理、数据存储、网络通信等方面的内容。 在进行iPhone编程时,首先需要熟悉iOS操作系统...
在现代移动设备中,尤其是苹果的iPhone,Retina显示屏提供了极高的像素密度,为用户提供更加清晰、细腻的视觉体验。然而,这也对网页设计师提出了挑战,因为普通的非Retina图片在高分辨率屏幕上会显得模糊。为了解决...
这个“jQuery模拟iPhone获取WiFi网络列表代码”项目,显然是一个利用jQuery来创建一个与iPhone界面类似的WiFi网络选择器的示例。通过分析这个压缩包内的代码,我们可以学习到如何用JavaScript和jQuery来模拟移动设备...
本文将深入探讨如何在iPhone开发中利用多线程进行网络请求和图片下载。 首先,我们来看一下标题中的“多线程网络请求”。在iOS中,网络请求通常采用URLSession进行,它提供了异步处理能力,可以在后台线程中执行,...
中国移动的iOS16 ipcc文件 53
接着,我们需要加载图片数据,这通常涉及到读取图片文件,如JPEG或PNG,然后使用`glTexImage2D`函数将数据送入GPU。 在iPhone上,由于内存和性能限制,纹理的大小和格式需要谨慎处理。通常我们会选择合适的纹理格式...
Objective-C或Swift是iPhone应用的主要编程语言,它们都提供了URLSession类来发送网络请求。开发者需要构造合适的URL,携带必要的参数,以GET或POST方式提交到服务器。 2. **WebService类型**:在描述中提到了XML和...
10. **第三方库集成**:除了Apple官方提供的框架,开发过程中可能还引入了其他第三方库,如SDWebImage用于图片加载,MBProgressHUD用于加载指示器,MBProgressHUD用于网络请求的状态显示等。 对于初学者来说,通过...
在loadView()方法中加载图片资源,通常这些图片资源被保存在NSMutableArray类型的imageArray变量中。OpenFlow库的requestImageForIndex代理方法中,通过NSMutableArray的索引获取具体图片。 OpenFlow编程实现图片...
在jQuery Mobile框架中,开发移动应用时,确保图片能够自适应不同手机屏幕大小是一项关键任务。这不仅可以提高用户体验,还能确保应用在各种设备上显示得美观且功能正常。标题和描述提到的问题,主要关注如何利用...
- 移动优先:设计时要考虑小屏幕设备,确保主要内容在小屏幕上也能清晰呈现。 - 视觉一致性:使用与iOS系统相似的图标、颜色和字体,保持整体风格的一致性。 - 交互设计:模仿iPhone的滑动、点击、缩放等交互方式,...