正文
###开篇
最近换工作,刚到公司熟悉项目和代码风格等一系列东西,时间比较紧,简书有段时间没有更新,就趁今天有时间在家写点东西吧,下周又要开新的项目估计就要忙了。这里先说一下未来要写的内容和计划,今天可能先谈一下一些框架和代码风格以及布局原理的东西,下周在公司值班,陆续会补充一些商城APP中常用的一些框架和封装,以及一些比较常用的第三方,同时会介绍一下他们的用法,希望能够对做这一块的有所帮助,也能让自己对这个项目加深了解,在新项目的同时以后若是回头来更新也能更加得心应手。由于涉及到公司原因部分模块代码不会太多,但是对第三方会有详细介绍。因此文章会有一个系列希望喜欢的关注下,大神轻喷。
####框架和风格
-
项目框架
框架和风格每个公司都有自己的特点,下面放一个这个项目的部分框架截图
部分框架截图
上图我们可以看到,主要的内容是在Classes中,里面的框架如下
Classes内容
而在Utils中方的则是一些常用的东西,比如是网络请求的封装等一些manager,以及动画封装,category和runtime等一些项目中常用到的代码封装。
再Vendor中放的则是一些自己公司封装的一些空间和一些没有用cocopods导入的第三方等。
-
代码风格
代码风格和框架一样,不同的团队都有着一套自己的方法和规范,这里放一份仅做参考吧。
项目中使用懒加载和masonry自动布局,为了便于维护和代码的可读性做了一下规范,有需要的可以看一下。
.h文件
@interface CodeStyleViewController : UIViewController
@property(nonatomic,strong) UIView * demo ;
@end
-(void)viewDidLoad{
[super viewDidLoad];
//将self.view实例添加到self.view中
[self.view addSubview:self.demo];
//给view添加autolayout constraints
[self viewMakeMasConstraints];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
}
-(void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
}
//
-(UIView *)demo{
if (_demo==nil) {
_demo=[UIView new];
}
return _demo;
}
/**
* 给vc中的view添加autolayout constraints
*/
-(void)viewMakeMasConstraints{
[self.demo makeConstraints:^(MASConstraintMaker* make){
make.top.equalTo(self.view);
make.bottom.equalTo(self.view);
make.left.equalTo(self.view);
make.right.equalTo(self.view);
}];
}
####关于布局
关于商城页面其实布局上还是很有挑战的,因为你要展示的东西会比较多,那么关于这些控件你要安排它也就是一个比较重要的事情了,因为不同的想法可能会极大的增加自己的工作量。
商城
在商城类软件中此类布局算是比较常见的了。虽然控件较多,但是我们仔细分析下来,其实并不算是相当麻烦,导航栏上的控件我们不用多少。往下的话,就是一个滚动的广告栏,专柜特区以及一组图片,最下面则是一个网格视图。整个页面又是可以滚动的,那么我们就会想,如果我们把上面说的控件作为网格的头视图会不会好一点,于是我们找到了自己布局的思路。