最近想实现一个兴趣小组列表的一个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后,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];
}
|