tableView 获取网络图片,并且设置为圆角(优化,fps)

代码地址如下:<br>http://www.demodashi.com/demo/11088.html

一、准备工作

  • 例子比较精简,没有什么特殊要求,具备Xocde8.0左右版本的就好

二、程序实现

1、相关代码截图

  • 代码里除了三方库 SDWebImage Kingfisher,一共分别有两个 category 和 extension
  • OC代码截图

  • Swift代码截图

####2、具体实现
下面我们来介绍下 OC的代码 实现逻辑
首先我们利用SDWebImage 最近版本添加的成功回调的方法

[self sd_setImageWithURL:url placeholderImage:[placeholder imageRoundCorner] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
  }];

这个代码我们可以看到 回调成功会有 image传回来,这时我们通过对这个image 处理,把它处理成圆角的,在显示在imageView上,
设置圆角的方法 这里是采用 贝塞尔曲线(UIBezierPath)实现的
贴上部分代码

// 开始绘图,创建上下文
UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
// 得到上下文
  CGContextRef context = UIGraphicsGetCurrentContext();
// 得到上下文大小
  CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
// 等比例例
  CGContextScaleCTM(context, 1, -1);
// 移动画布位置
  CGContextTranslateCTM(context, 0, -rect.size.height);
// 开始利用贝塞尔曲线话圆角图片
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadii:CGSizeMake(radius, borderWidth)];
    [path closePath];
    CGContextSaveGState(context);
    [path addClip];
    CGContextDrawImage(context, rect, self.CGImage);
    CGContextRestoreGState(context);

最后得到图片

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

三、运行效果

代码地址如下:<br>http://www.demodashi.com/demo/11088.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

原文地址:http://blog.51cto.com/13209204/2287813

时间: 2024-08-01 17:53:37

tableView 获取网络图片,并且设置为圆角(优化,fps)的相关文章

iOS下载图片之前获取网络图片尺寸的失败尝试

最近一直在找获取网络图片的size的方式,最后得出两个结论: 1 使用分线程下载下来,然后获得图片的size 2 使用网络请求图片的头文件,然后从头文件中找到图片大小的信息 第一种方法需要主线程分线程切换,因为在使用tableView来reloadData的时候,刷表老是出问题,先放着不管 然后我重点是想搞一下第二个方法: 在网上找到了一个博客:http://cxjwin.github.io/2013/11/05/preview_image_size/ 大神写的很不错 主要思路就是先在网上找一个

IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合

第一.复制对象的基本概念 复制一个对象为副本,开辟一块新的内存来存储副本对象. 第二.如果一个对象想具备复制的功能,必须实现<NSCopying>协议和<NSMutableCopying>协议 NSObject自带的常用的对象有:NSNumber.NSString.NSArray.NSDictionary.NSMutableArray.NSMutableDictionay.NSMutableString,copy产生的对象时不可变的,mutableCopy产生的对象时可变的 第三.

圆角优化

自观察的巧妙应用 既然要生成圆角图片,首先要解决生成时机问题.可能会有朋友想到swizzle类UIImageView的setImage方法,但我个人并不推 荐,毕竟Swizzle类方法影响范围太广,对于大型开发团队,出问题后很难排查定位问题所在.定义UIImageView子类?实用性不强! 还记得我在文章<“自释放”在iOS开发中的应用> 中提到的实现自释放的三种方式吗?其中一种方式就是动态属性观察者——通过创建一个动态属性KVO被观察对象的某一属性,从而达到自监控的目的. 通过创建动态属性观

使用一个shape.xml文件,使用代码设置不同圆角背景颜色

给一个View设置一个圆角的背景颜色,我们一般会使用xml文件设置,使用<shape>节点设置,但是如果我们对一系列的View设置圆角北京,并且背景颜色色值不同,那么我们第一感觉想到的是创建多个xml文件,更改solid填充背景,其实我们可以使用一个xml文件就可以搞定,使用代码更改里面的填充颜色色值.废话不多话,看代码. 效果: 首先:创建activity_main.xml <RelativeLayout xmlns:android="http://schemas.andro

Cocos2dx-获取网络图片并显示

本文转载于:http://www.cnblogs.com/zisou/p/cocos2dxWLTP.html 经过自己简单封装了一下,实现了获取网络图片,按照比例展示出来,实现方法是cocos2dx - http的异步方法,相信有很多地方都会使用 到着这个需求:比如获取玩家的头像. 我就直接贴代码了,只需一个类就可以搞定: HttpGetImg.h #ifndef __HttpGetImg__ #define __HttpGetImg__ #include "cocos2d.h" #i

cocos2d-x C++ 获取网络图片缓存并展示

#ifndef __HttpGetImg__ #define __HttpGetImg__ #include "cocos2d.h" #include "HttpRequest.h" #include "HttpClient.h" USING_NS_CC_EXT; using namespace std; USING_NS_CC; class HttpGetImg : public cocos2d::CCLayer { public: HttpG

android下载网络图片,设置宽高,等比缩放

使用Picasso组件去下载图片会发现图片宽高会变形不受等比缩放控制,即使设置了图片的 scaleType,可能是对Picasso的api没有用对, Picasso.with(this.activity) .load(AppModel.GetInstance().userAvatarPath) .noFade() .fit() .into(avatar) 使用Glide库会更加方便,很好控制下载好的图片宽高等比缩放 1,布局如下: <ImageView android:id="@+id/q

检测SDWebImage有没有缓存图片 IOS 获取网络图片大小

NSURL *url = [NSURL URLWithString:[model.content objectForKey:@"image"]];             //请求网络地址数据的同步方法             //因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题             SDWebImageManager *manager = [SDWebImageManager sharedManager];              [manag

iOS 在TableView的Cell之间设置空白间隔空间

1.设置section的数目,即是你有多少个cell - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; // in your case, there are 3 cells } 2.对于每个section返回一个cell - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)secti