最近几天公司的项目正好涉及到仿写微信朋友圈的tableview,一款扫描二维码条形码的APP,可以对商品进行评论,删除评论,上传图片等功能。开发一周完成后,就看了一下网上别人写的微信朋友圈的demo,在GitHub上一搜,排名第一位的是GSD_weixin。本文是以模仿gsd_weixin的写法,介绍一些开发中遇到的问题和技术点,代码中写了大量的注释,希望对新手入门oc开发有一定的帮助。
上传几张截图
1. 设置状态栏字体颜色
在info.plist中,将View controller-based status bar appearance设为NO
在app delegate中:[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
如果View controller-based status bar appearance为YES。
则[UIApplication sharedApplication].statusBarStyle 无效。
2.滑动流畅技巧
本项目使用SDAutoLayout对tableviewCell进行高度计算
//实现cell的缓存,tableview滑动更加顺畅
[cell useCellFrameCacheWithIndexPath:indexPath tableView:tableView];
//计算cell高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
id model = self.dataArray[indexPath.row];
return [self.tableView cellHeightForIndexPath:indexPath model:model keyPath:@"model" cellClass:[TimeLineCellTableViewCell class] contentViewWidth:DeviceWidth];
}
3.布局控件
使用SDAutoLayout对控件添加约束进行布局,注意:
“更多”和“收起”button的高度需要在setModel方法中设置,九宫格图片imageView已经在内部实现宽度和高度自适应所以不需要再设置宽度高度,top值是具体有无图片在setModel方法中设置。
评论的背景图是一张图片,通过按比例拉伸,形成截图里这种效果,注意:
//stretchableImageWithLeftCapWidth: 这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。
UIImage *bgImage = [[UIImage imageNamed:@"LikeCmtBg"] stretchableImageWithLeftCapWidth:40 topCapHeight:30];
判断是否显示“更多”、“收起” button,注意:
在TimeLineModel.m文件中声明msgContent,并且计算msgContent的Size,从而判断textRect.size.height的高。决定是否显示“更多”、“收起” button。
4.extern、static、const区别
extern引用变量,extern具备与.h文件很相似的跨文件访问的功能;
extern声明,仅适于修饰全局变量,不能去修饰其他的变量。一般情况下默认,定义的全局变量都带有extern。
const是用来修饰常量的
static修饰全局变量
注意:
extern与const组合:只需要定义一份全局变量,多个文件共享。并且全局常量只被定义一次,分配一次内存空间。
总结:本文简单介绍了在仿写朋友圈demo中的一些注意点,里面许多的判断,block, delegate的使用,适合新手学习。
源码下载地址:https://github.com/wdkwudiankun/WeiXin_wdk
网友评论