iOS走近商城APP(一 框架 代码风格)

开篇

最近换工作,刚到公司熟悉项目和代码风格等一系列东西,时间比较紧,简书有段时间没有更新,就趁今天有时间在家写点东西吧,下周又要开新的项目估计就要忙了。这里先说一下未来要写的内容和计划,今天可能先谈一下一些框架和代码风格以及布局原理的东西,下周在公司值班,陆续会补充一些商城APP中常用的一些框架和封装,以及一些比较常用的第三方,同时会介绍一下他们的用法,希望能够对做这一块的有所帮助,也能让自己对这个项目加深了解,在新项目的同时以后若是回头来更新也能更加得心应手。由于涉及到公司原因部分模块代码不会太多,但是对第三方会有详细介绍。因此文章会有一个系列希望喜欢的关注下,大神轻喷。

框架和风格

  • 项目框架
    框架和风格每个公司都有自己的特点,下面放一个这个项目的部分框架截图
    部分框架截图
    上图我们可以看到,主要的内容是在Classes中,里面的框架如下

Classes内容
而在Utils中方的则是一些常用的东西,比如是网络请求的封装等一些manager,以及动画封装,category和runtime等一些项目中常用到的代码封装。
再Vendor中放的则是一些自己公司封装的一些空间和一些没有用cocopods导入的第三方等。

  • 代码风格
    代码风格和框架一样,不同的团队都有着一套自己的方法和规范,这里放一份仅做参考吧。
    项目中使用懒加载和masonry自动布局,为了便于维护和代码的可读性做了一下规范,有需要的可以看一下。
.h文件
#import <UIKit/UIKit.h>
@interface CodeStyleViewController : UIViewController
#pragma mark ###1,在此处编写要加入界面的控件
@property(nonatomic,strong) UIView * demo ;
@end

-(void)viewDidLoad{
[super viewDidLoad];
#pragma mark ###3,将控件添加到容器中
//将self.view实例添加到self.view中
[self.view addSubview:self.demo];

#pragma mark ###4,进行界面布局
//给view添加autolayout constraints
[self viewMakeMasConstraints];

#pragma mark ###5,进行网络或者本地数据加载

}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
}
-(void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
}

//
#pragma mark - UITableViewDataSource UITableView数据源

#pragma mark - UITableViewDelegate UITableView代理方法

#pragma mark - CustomDelegate 自定义代理方法

#pragma mark - 网络请求,数据请求

#pragma mark - event response button、GestureRecognizer的响应事件

#pragma mark - private methods 自定义私有方法

#pragma mark - getters and setters 定义view实例的存取方法,view使用getter方法进行初始化

#pragma mark ###2,在此处进行控件和相关内容的初始化 懒加载

-(UIView *)demo{
if (_demo==nil) {
_demo=[UIView new];
}
return _demo;
}

#pragma mark - AutoLayout代码布局

#pragma mark ###4,进行界面布局:由上向下或者由下向上进行布局

/**
* 给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);

}];

}

关于布局

关于商城页面其实布局上还是很有挑战的,因为你要展示的东西会比较多,那么关于这些控件你要安排它也就是一个比较重要的事情了,因为不同的想法可能会极大的增加自己的工作量。

商城
在商城类软件中此类布局算是比较常见的了。虽然控件较多,但是我们仔细分析下来,其实并不算是相当麻烦,导航栏上的控件我们不用多少。往下的话,就是一个滚动的广告栏,专柜特区以及一组图片,最下面则是一个网格视图。整个页面又是可以滚动的,那么我们就会想,如果我们把上面说的控件作为网格的头视图会不会好一点,于是我们找到了自己布局的思路。

我的交易界面
上面的界面虽然看着不如商城界面充满界面的感觉,但是如果我们不利用任何的第三方,那么关于他们之间的布局以及逻辑也值得我们好好的去思考。
我们根据枚举去区分我们点击是最上层的那个按钮,并改变他们的颜色,然后根据点击内容的不同决定第二行按钮和划线内容以及个数的不同,之后再根据选择去用列表展示。
布局有时候也许并不像想象的那么无解,至今记忆较深的就是一个朋友去面试,面试官跟他说的,程序员一开始可能是你的码代码的能力,但是真的到最后你会发现逻辑思维能力大于你单纯的代码能力,很多东西,逻辑出来了,去实现它也许难度并没有那么大。

后记

因为是第一篇大致就这些吧,下一篇会多说一些常用的能够简单的实现我们效果的控件的使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,537评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,592评论 4 59
  • 2017就这样开始了,老公的兄弟姐妹比较多! 过完年他们(她们)都将出门了,在走之前自己准备了两桌…… 希望我们这...
    柳絮轻舞阅读 235评论 3 0
  • 本章讲述的是非口语沟通。我认为叫非语言沟通还更贴切。因为非口语沟通的意思就是不用字词表达出来的信息。不传递非口语沟...
    木易羊031阅读 188评论 0 0
  • gradient(渐变) 生成渐变颜色的背景图片 CSS3渐变分为linear-gradient(线性渐变)和ra...
    卓小生阅读 2,094评论 0 0