美文网首页
iOS-渐进渲染大图

iOS-渐进渲染大图

作者: 小猫仔 | 来源:发表于2017-09-19 12:17 被阅读0次

    渐进渲染大图对加载大图特别重要,地图都是局部加载,放大移动时候一部分一部分的渐进的加载,一般在对大图进行网络请求时候,可以获得一部分数据就加载一部分数据。

    用本地图片和定时器来模拟网络加载图片。

    @interfaceViewController(){

    NSMutableData* _data;

    NSData* _allData;

    NSUInteger length;

    UIImageView* _imageView;

    NSTimer* timer;

    NSInteger le;

    }

    @end

    @implementation ViewController

    -(void)viewDidload{

    [super viewDidload];

    _data = [NSMutableData alloc]init];

    NSString *path =[[NSBundlemainBundle]pathForResource:@"Portrait-ns@2x"ofType:@"png"];

    _allData = [NSDatadataWithContentsOfFile:path];

    length = _allData.length;

    le = length/10;

    timer = [NSTimer scheduledTimerWithTimeInterval:1target:self selector:@selector(updateImage) userInfo:nil repeats:YES];

    _imageView = [[UIImageViewalloc]initWithFrame:self.view.frame];

    [self.view addSubview:_imageView];

    }

    }

    -(void)updateImage{

    staticintindex =0;

    if(index==10) {

    return;

    }

    NSUInteger l;

    if(index==9) {

    l=length-le*9;

    }else{

    l= le;

    }

    Byte  by[l];

    [_allData getBytes:by range:NSMakeRange(index*le, l)];//得到新增字节然后渲染图片。

    [_data appendBytes:by length:l];

    CGImageSourceRefmyImageSource =CGImageSourceCreateWithData((CFDataRef)_data,NULL);

    CGImageRefmyImage =CGImageSourceCreateImageAtIndex(myImageSource,0,NULL);

    CFRelease(myImageSource);

    _imageView.image = [UIImageimageWithCGImage:myImage];

    //    image.image = [UIImage imageNamed:@"image.ico"];

    index++;

    }

    相关文章

      网友评论

          本文标题:iOS-渐进渲染大图

          本文链接:https://www.haomeiwen.com/subject/pnjwsxtx.html