IOS加载网络图片的框架(共有4中方法)

iOS异步加载网络图片 在iOS中加载网络图片有多种方式: 法1:在主线程中同步加载网络图片 在主线程中加载图片,先将图片的URL存放进NSURL,然后再用这个NSURL初始化NSData,再把UIImage用NSData初始化,就行了。代码如下: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSInd 阅读详情

框架名为:UIImage+WebCache.h   继承于UIimageView

框架里面加载网络图片的方法共4中:分别为1.普通加载   2.线程NSThread    3.

#import "ViewController.h"

#import "UIImage+WebCache.h"

@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

   

    imageArray = [NSMutableArray array];

    for(int i = 0;i < 5;i++){

        for(int j = 0;j < 6;j++){

            UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(j*65 +5, i*64 +10, 60, 60)];

            imageView.backgroundColor = [UIColor cyanColor];

            [self.view addSubview:imageView];

        

            [imageArray addObject:imageView];

        }

    

    }

    

    

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    button.frame = CGRectMake(160, 400, 80, 30);

    

    [button setTitle:@"载入" forState:UIControlStateNormal];

    [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];

    

    [self.view addSubview:button];

    

}

- (void)buttonAction{


    for(UIImageView *imageView in imageArray){

       NSString *string = @"http://img3.douban.com/view/photo/photo/public/p2221339563.jpg";

        

        NSURL *url = [NSURL URLWithString:string];

        

        [imageView setImageWithURL:url];

    }

}




UIImage+WebCache.h  自定义一个方法


#import <UIKit/UIKit.h>


@interface UIImageView (WebCache)


- (void)setImageWithURL:(NSURL *)url;

@end




UIImage+WebCache.m--------  方法的实现


#import "UIImage+WebCache.h"


@implementation UIImageView (WebCache)


- (void)setImageWithURL:(NSURL *)url{


    //第一种方法:普通的加载

    /*

    NSData *data = [NSData dataWithContentsOfURL:url];

    UIImage *image = [UIImage imageWithData:data];

    [self setImage:image];

    */

    

    //第二种方法:线程

    //NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(loadImage:) object:url];

    

    //[thread start];

    

    //第三种方法:队列

  /*  NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    //操作数

    NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{

       

        NSData *data = [NSData dataWithContentsOfURL:url];

        UIImage *image = [UIImage imageWithData:data];

        

        //使用主队列来回到主线程

        //在主线程上修改UI

        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

            //修改UI界面

        [self setImage:image];

        }];

    }];

    

    [queue addOperation:op];

    */


    //----------------GCD---------------

//    //1.创建Queue

//    dispatch_queue_t queue = dispatch_queue_create("com.xw.gcd.queue", DISPATCH_QUEUE_CONCURRENT);//并行队列

//    

//    //2.创建要执行的任务,加到队列中

//    dispatch_async(queue, ^{

//        

//        NSData *data = [NSData dataWithContentsOfURL:url];

//        UIImage *image = [UIImage imageWithData:data];

//        [self setImage:image];

//    });


    

    //用系统给的queue---

    //  (两个参数)

    //参数1:优先级

    //参数2:标识符

    dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    

    dispatch_async(globalQueue, ^{

    //请求数据

        NSData *data = [NSData dataWithContentsOfURL:url];

        UIImage *image = [UIImage imageWithData:data];


        //显示在UI界面上

        dispatch_async(dispatch_get_main_queue(), ^{

            //UI相关的代码

            //UI界面的刷新最好回到主线程中

            [self setImage:image];

        });

    });

    

}


- (void)loadImage:(NSURL *)url{

    NSData *data = [NSData dataWithContentsOfURL:url];

    UIImage *image = [UIImage imageWithData:data];

    [self setImage:image];

    


}

@end



IOS加载网络图片(Kingfisher) 博主使用IOS开发框架:SWIFTUI 详细页面如下: https://github.com/onevcat/Kingfisher/wiki/SwiftUI-Support 安装方式: CocoaPods pod 'Kingfisher/SwiftUI' SwiftUI support is provided in a sub-spec. So instead of specifyingpod 'Kingfisher', you needpod 'Kingfi... 阅读详情

相关推荐

iOS图片加载神器SDWebImage库实战教程

本文还有配套的精品资源,点击获取 简介:SDWebImage是一个iOS开发中广泛使用的开源库,专门用于加载和缓存网络图像。它提供了异步加载、内存和磁盘缓存、URLSession集成、图片解码、占位图和加载进度、GIF和WebP支持、国际化和兼容性、可扩展性、安全性和错误处理等高级特性。本教程将通过实战项目,带领你掌握SDWebImage库的实际应用,包括图片加载、缓存、解...

weixin_42513209的博客 1545

veImageX 演进之路:iOS 高性能图片加载 SDK

动手点关注干货不迷路1. SDK简介图片在业务应用场景是一个常见的元素,veImageX(简称ImageX)为业务提供了灵活、高效的一站式图片处理解决方案,包括了服务端 SDK、上传 SDK 和客户端图片加载 SDK。本文就来介绍下 iOS 客户端图片加载 SDK(下文中简称 SDK),SDK 主要提供图片网络加载、图像解码、图片基础处理与变换以及图片服务质量监控上报等能力。1.1 业内主流开源...

字节跳动技术团队官方博客 5145

ios-2张 imageView 实现轮播图(加载网络图片和加载本地图片封装).zip

这个本人封装的用2张imageView就实现的轮播图,里面有两个文件夹,一个加载本地图片的封装,一个是加载网络图片的封装。本人为每一个封装都留有了一个block块接口,使用其可以做到与外界其他类配合实现自定义功能,比如与UIPageControl配合,另外还封装了一个类似于UITableView的reloadData方法一样的刷新方法,只需要给此轮播图图片数组传入一个新值,再调用此方法,就可以实现刷新,其他的用法已经在文档中注明。 另外,此轮播图封装,是用KVO监听实现的,克服了其他轮播图代码使用时滑动出现空白页的不足之处。

从零开始打造一个iOS图片加载框架(一)

JImage 从零开始打造一个iOS图片加载框架(二) 从零开始打造一个iOS图片加载框架(三) 一、前言 目前比较流行的图片加载框架主要包括:SDWebImage、YYWebImage和PINRemoteImage等。这里也有篇文章,很好地介绍了三个框架的优缺点:YYWebImage,SDWebImage和PINRemoteImage比较。 关于打造一个iOS图片加载框架的原因 锻炼自...

weixin_34150503的博客 454

iOS 图片加载框架SDWebImage解读

本篇文章主要介绍了iOS 图片加载框架SDWebImage解读,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

SAP成本中心费用分割(KSS2)实战:从原理到月末调整全解析

本文详细解析了SAP成本中心费用分割(KSS2)的核心逻辑与实战操作,从成本要素分组配置到月末调整全流程。通过KSS2将初级成本要素按作业类型重新分类为次级成本要素,确保成本结算准确。文章还提供了常见错误处理方法和典型业务场景实战,帮助用户高效完成SAP成本结算。

weixin_29279101的博客 1264

SplaTAM与主流SLAM方案对比:为什么3D高斯是未来的发展方向

SplaTAM(Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM)是CVPR 2024提出的创新SLAM方案,它将3D高斯技术引入实时定位与地图构建领域,彻底改变了传统SLAM系统的性能边界。本文将深入对比SplaTAM与主流SLAM方案的核心差异,揭示3D高斯技术如何成为下一代SLAM的关键发展方向。 ## 🚀 传统SLAM方案的三大痛

gitblog_00338的博客 1236

YOLOv8n行人检测实战:从数据集准备到模型训练

本文详细介绍了使用YOLOv8n进行行人检测的完整流程。首先阐述了YOLOv8的优势:高速推理(300+FPS)、更高精度、易用性和轻量化(仅6MB)。接着通过Docker搭建GPU训练环境,配置32GB共享内存避免数据加载问题,并安装必要的框架和OpenCV组件。数据集采用COCO2017标注格式,包含归一化坐标的YOLO标签文件。通过可视化脚本验证标注准确性后,提出多数据集融合训练策略以增强模型泛化能力。最后使用Ultralytics框架启动训练,展现了从环境搭建到模型训练的完整技术路径。该方案兼顾检测

Hi20240217的博客 1094

iOS加载网络图片

在 iOS 中加载网络图片,常见的方法是使用 UIImageView 类的 sd_setImage(with: URL) 方法。具体使用方法如下: 首先,创建一个 UIImageView 对象,并将它的 frame 设置为所需的大小: let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 然...

weixin_35754676的博客 697

告别玄学调参:手把手教你用20元件模型搞定GaN HEMT高频仿真(附S参数提取避坑指南)

本文详细介绍了如何使用20元件模型优化GaN HEMT高频仿真,解决传统16元件模型在10GHz以上频段的误差问题。通过S参数提取避坑指南和实战案例,帮助工程师精准建模分布式电极效应和寄生反馈路径,提升射频电路设计效率。

weixin_42523693的博客 443

嵌入式调光控制库:轻量级软启/渐变/记忆逻辑实现

调光控制是智能照明系统的核心基础功能,涉及亮度调节、人机交互与电气安全多重需求。其底层原理依赖于对相位角或PWM占空比的精确时序控制,并需融合软启动、渐变过渡、状态记忆等工程化逻辑。这类轻量级调光行为逻辑层,不直接操作硬件寄存器,而是以确定性、无动态内存、可配置的方式封装用户意图到目标亮度值(0–100%)的映射过程,显著提升产品鲁棒性与跨平台复用能力。广泛应用于TRIAC交流调光、LED直流PWM驱动及DALI/Matter等智能照明协议网关中,尤其适合资源受限的Cortex-M系列MCU和FreeRTO

weixin_28949937的博客 579

iOS图片加载框架-SDWebImage

在iOS的图片加载框架中,SDWebImage可谓是占据大半壁江山。 支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。SDWebImage 概论1.提供了一个UIImageView的category用来加载网络图片并且对网络图片的缓存进行管理

遇见更好的自己 752

TriCore架构-基于TC397的启动流程

TC397芯片的启动流程分为三个关键阶段:固件启动(BootFirmware)、Bootloader引导和应用程序启动。BootFirmware作为硬件信任根,包含SSW基础初始化、CHSW自检和BSL应急刷写通道。Bootloader承担安全验证和程序引导功能,支持双分区(AB-SWAP)和双引导方案(PBL/SBL)。安全启动通过校验机制确保软件完整性,提供三种可选技术方案。应用程序启动阶段实现软件双分区管理,支持SOTA更新。整个流程体现了汽车电子系统的安全设计理念,通过硬件级保护与软件验证相结合确保

xiandang8023的博客 987

安卓加载网络图片VSiOS加载网络图片

安卓 记得打开网络权限 <!-- 打开网络权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> Java代码 package com.example.android_load_internet_img; import an

WenZhengshi的博客 3374

环境仿真软件:EcoPath with Ecosim_(4).Ecosim模型动态模拟

Ecosim 是 EcoPath with Ecosim (EwE) 软件中的动态模拟模块,用于模拟生态系统中各个组分的动态变化过程。Ecosim 模型通过时间序列数据和动态参数,可以预测生态系统在不同管理措施下的响应。时间序列数据的输入:用户可以输入历史数据,如捕捞努力、生物量、环境因子等,用于校准模型。动态参数的设置:用户可以设置被捕食率、生长率、捕捞死亡率等动态参数,以反映生态系统的变化。模拟结果的分析。

kkchenjj的博客 894

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

本文介绍了在Pix4d软件中通过修改中央子午线设置来解决跨分带测区刺点问题的方法。针对测区跨3度分带(如105°和108°之间)时像控点与靶标点偏移较大的情况,建议将中央子午线设为测区中心(如106.5°)。具体操作步骤包括:修改投影文件中的中央子午线参数,选择新的输出坐标系配置文件。该方法能有效提高像控点刺点效率,为航测内业数据处理提供便利。操作简单实用,适合大比例尺测图项目中跨分带测区的数据处理需求。

智慧空间实验室 5527

ios UIImageView异步加载网络图片

方法1:在UI线程中同步加载网络图片 UIImageView*headview=[[UIImageViewalloc]initWithFrame:CGRectMake(0,0,40,40)]; NSURL*photourl=[NSURLURLWithString:@"http://www.exampleforphoto.com/pabb/tes...

diaomu2002的博客 1269

如何用 Claude Code 阅读和理解陌生代码

摘要: 在接手陌生代码时,Claude Code能显著提升理解效率。核心策略是结构化拆解而非逐行阅读: 从整体入手:先扫描目录结构、定位核心模块,建立项目地图; 聚焦关键路径:通过数据流追踪、异常逻辑分析,识别技术债与风险点; 规避常见错误:避免抽象提问或一次性提交全部代码,应分模块精准提问; 高阶应用:可生成逻辑分层图、标记高复杂度区域,甚至定制阅读顺序。 最终目标是通过结构优先的提问策略,将理解周期从数天压缩至数小时。

sg_knight的专栏 1021

ios html异步加载图片,ios UIImageView异步加载网络图片

方法1:在UI线程中同步加载网络图片UIImageView*headview=[[UIImageViewalloc]initWithFrame:CGRectMake(0,0,40,40)];NSURL*photourl=[NSURLURLWithString:@"http://www.exampleforphoto.com/pabb/test32.png"];//url请求...

weixin_29898529的博客 703

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

iOS开发————几种图片加载方式

作为编者自己的一个复习总结以及广大iOS开发初学者的小小福利,呕心沥血诞生出这篇图片加载方式的文章,如有不足请指正。 先谈谈iOS图像加载方式的分类吧。 本地加载:从程序包中加载,从沙盒加载以及从本地相册加载。 网络加载:根据网络地址来加载图片。 先总结网络加载:NSData提供了简单的网络数据加载,这个数据当然包括了图像数据啦,NSData和UIImage之间可以互相转换

Lerryteng的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【iOS】网络加载图片缓存与SDWebImage

加载网络图片可以说是网络应用中必备的。如果单纯的去下载图片,而不去做多线程、缓存等技术去优化,加载图片时的效果与用户体验就会很差。 一、自己实现加载图片的方法 tips: *iOS中所有网络访问都是异步的.(自己开线程去下载) *普通为模型增加UIImage属性的方法做的是内存缓存(下次启动还需要从网络重新加载), 而要做本地缓存的话,还要自己手动存储网络上下载的图片. *为了加快访

我心永恒的专栏 558

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法

IOS开发中加载大量网络图片如何优化1、概述在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着才能把图片放入图片路径显示。比如:-(UIImage *) getImageFromURL:(NSString *)fileURL {//NSLog(@"执行图片下载函数");UIImage * resu...

weixin_34788662的博客 318

YYWebImage——iOS异步图片加载框架

YYWebImage 是一个异步图片加载框架 (YYKit组件之一). 其设计目的是试图替代 SDWebImage、PINRemoteImage、FLAnimatedImage 等开源框架,它支持这些开源框架的大部分功能,同时增加了大量新特性、并且有不小的性能提升。 它底层用YYCache实现了内存和磁盘缓存, 用YYImage实现了 WebP/APNG/GIF 动图的解码和播放。 你可以查看这些项目以获得更多信息。 特性 异步的图片加载,支持 HTTP 和本地文件。 支持 WebP、...

u013712343的博客 2099

IOS中UITableView异步加载图片的实现

最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个EGOImageView的很好的例子。 但是由于,EGOImageView的实现比较复杂,于是自己就动手做了一个AsynImageView,同样可以实现EGOImageView的效果。 而且自己写的代码比较清晰,容易理解,同样可以实现指定placehoderImage以及指定imageURL,来进行图片的异步加载

集结号 3万+

iOS: imageIO完成渐进加载图片

imageIO完成渐进加载图片   不得不说,人都是有惰性的,一个月又快结束了,这个月虽说有点儿忙,但是绝对不差写几篇博客的时间,有时间去n次桌球厅,有时间玩n把英雄联盟,所谓小撸怡情大撸伤身,这个月游戏打得有点儿多,后面还是的控制一点儿。不扯了,下面进入正题,今天写写这个月初时使用imageIO框架实现的一个从web拉取,渐进加载图片的图片。 前面有一篇《使用imageIO获取和修改图

萌萌的It人 www.itmmd.com 5222
上一篇: IOS自定义导航栏Push动画效果
下一篇: IOS图片上添加水印文字(微博上图片上得水印文字)
CyanColor
博客等级 码龄12年 7粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值