iOS异步加载图片方法
来源:互联网 发布:大数据分析师培训班 编辑:程序博客网 时间:2024/05/20 03:46
比较原始的方法:
AsyncImageView.h:
#import <UIKit/UIKit.h>
@interface AsyncImageView : UIView
{
NSURLConnection* connection;
NSMutableData* data;
}
- (
void
)loadImageFromURL:(NSURL*)url;
@end
AsyncImageView.m:
#import "AsyncImageView.h"
@implementation AsyncImageView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if
(self) {
// Initialization code
}
return
self;
}
- (
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];
}
- (
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] > 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
使用:
AsyncImageView *asyncImage = [[AsyncImageView alloc] init];
asyncImage.frame = CGRectMake(100, point_y, 95, 95)
//圆角
[asyncImage.layer setMasksToBounds:YES];
[asyncImage.layer setCornerRadius:15];
[asyncImage loadImageFromURL:[NSURL URLWithString:@
"www.istar.name/...."
]];
- iOS异步加载图片方法
- iOS异步加载图片
- iOS 异步加载图片
- iOS异步加载图片
- iOS 异步加载图片
- IOS异步加载图片框架
- iOS开发:异步加载图片
- ios异步下载加载图片
- iOS异步加载缓存图片
- iOS图片的异步加载
- iOS异步加载网络图片
- iOS异步加载网络图片
- iOS Cell异步加载图片
- iOS 图片加载方法
- iOS开发之异步加载图片
- iOS 异步加载图片简单示例
- ios异步加载图片详细版
- iOS开发之异步加载图片
- unity3d优化的一个实用基类
- MyEclipse离线安装windowbuilder插件
- iOS App开发那些事:如何选择合适的人、规范和框架?
- 用别的方法跳到下一页
- Spring MVC 实例
- iOS异步加载图片方法
- DbgView不能显示OutputDebugString的输出内容
- 【转】【UNITY3D 游戏开发之五】Google-protobuf与FlatBuffers数据的序列化和反序列化
- socket bind failed的原因以及解决办法
- iOS开发利器-CocoaPods安装和使用教程 - 小木头_迪
- 报表格式之报表设计
- Hastiness(1727)
- [Stack Overflow] INSTALL_FAILED_DUPLICATE_PERMISSION
- 哪里可以下载高质量的android项目源码?