tableView 自定义Cell,仿收藏界面

           最近想实现一个兴趣小组列表的一个cell的实现,蛮小有兴奋的是,今天几户是对之前的学习的自定义list的一个演练,基本上能快速的根据几个步骤,写下去,在写cell的时候一直心里有数,写完cell后发现tableview居然没有加载成功,想了老大一会儿,发现原来是tv的datasource和delegate没有设置(低级错误还是有很多啊),在做cellFrame时,发现UILable得到字和自己预想的不一样,原来是UILable没有设置字体,默认的字体我也不知道多大,反正给我通过给定font和width计算好的frame是放不下的,后来在UILable同步修改了字体能放的下。收藏和未收藏使用了按钮的方式,通过按钮的背景图进行切换,增加一个target-action,处理点击事件,在上传给服务器后,实时变化收藏状态和收藏人数,通过一个delegate回送到controller更新数据保证和服务器的数据库保持一致。
这里遇到的一个问题,就是点击cell后,cell的背景色会变,想了半天,后来群里问了以下,说没有设置 [self setSelectionStyle:UITableViewCellSelectionStyleNone];,看来还是经验不足,缺少基本的的锻炼。

今天还是很高兴能完成一个Cell基本上都是手敲的代码,所以算是又是加深了一次,但还是有个问题的是,使用SDWebImage这个库如果使用的是imageView sd_setImageUrl,收到的图片只能根据imageView的UIViewContentMode的属性来显示,这个还有个很大的问题,因为图片的尺寸和iv的宽高比不一致,要不就是拉伸,要不就是留白,要不就是被裁剪,要想能完全按照原图比例塞下,也是我后面要学习的,不过之前要先使用SDWebImage只获取到图片,在block中在进行处理

还有就是UILable的文本自定义颜色,其实很简单,就是UILable.textColor

这里还要学习下,如何控制点击按钮的时间。因为要和服务器交互,所以不能频繁点击,有两种方案一种是只能等服务器返回后才能操作下一次,还有就是直接用时间控制,可能需要从服务器成功后+时间控制比较好。这里可以做成固定时间控制比较1s,但在这1s钟时间,服务器没返回也不能算是点击。


从http://www.open-open.com/lib/view/open1421812625375.html 找到独立使用sdwebIMAGE下载图片, 周末在家试试

使用SDWebImageManager类:可以进行一些异步加载的工作。


2
3
4
5
6
7
8
9
10
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImage *cachedImage = [manager imageWithURL:url];  // 将需要缓存的图片加载进来
if (cachedImage) {
       // 如果Cache命中,则直接利用缓存的图片进行有关操作
       // Use the cached image immediatly
else {
       // 如果Cache没有命中,则去下载指定网络位置的图片,并且给出一个委托方法
       // Start an async download
      [manager downloadWithURL:url delegate:self];
}

当然你的类要实现SDWebImageManagerDelegate协议,并且要实现协议的webImageManager:didFinishWithImage:方法。



// 当下载完成后,调用回调方法,使下载的图片显示
- ( void )webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image {
     // Do something with the downloaded image
}


独立的异步图像下载 可能会单独用到异步图片下载,则一定要用downloaderWithURL:delegate:来建立一个SDWebImageDownloader实例。
downloader = [SDWebImageDownloader downloaderWithURL:url delegate:self];
这样SDWebImageDownloaderDelegate协议的方法imageDownloader:didFinishWithImage:被调用时下载会立即开始并完成。
独立的异步图像缓存
SDImageCache类提供一个创建空缓存的实例,并用方法imageForKey:来寻找当前缓存。
UIImage *myCachedImage = [[SDImageCache sharedImageCache] imageFromKey:myCacheKey];
存储一个图像到缓存是使用方法storeImage: forKey:
[[SDImageCache sharedImageCache] storeImage:myImage forKey:myCacheKey];
默认情况下,图像将被存储在内存缓存和磁盘缓存中。如果仅仅是想内存缓存中,要使用storeImage:forKey:toDisk:方法的第三个参数带一负值
来替代。



2
3
4
5
6
7
8
9
10
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImage *cachedImage = [manager imageWithURL:url];  // 将需要缓存的图片加载进来
if (cachedImage) {
       // 如果Cache命中,则直接利用缓存的图片进行有关操作
       // Use the cached image immediatly
else {
       // 如果Cache没有命中,则去下载指定网络位置的图片,并且给出一个委托方法
       // Start an async download
      [manager downloadWithURL:url delegate:self];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值