博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS走近商城APP(二 购物车常用控件)
阅读量:6650 次
发布时间:2019-06-25

本文共 3442 字,大约阅读时间需要 11 分钟。

###开篇 上篇文章中简单了说了下APP的基本框架和布局,今天我们就来说一下在软件中常用到的控件以及实现他们的方法。上篇文章:(今天值班整座大楼静悄悄,好恐怖-_-、)。 ####购物车相关 #####控件一

  • 商品加入购物车前的规格选择界面
    如上图中红色框内的内容,是可以显示商品的规格内容,进行单选,要设置他的默认颜色,选中字体颜色和选中边框颜色,整个模块是根据商品的实际内容来决定的布局,底部是一个可以滚动的tableview。那么我们怎么实现它呢,方法1.自己封装一个控件,不过在处理数据和自适应布局上对经验有一定要求。方法2.使用第三方控件。这里推荐一个

上图是git上的示例图,我们按照框架的方法把条件约束后的方法做网络请求就可以得到库存和我们想要的数据了,下面我们来好好看一下这个框架。 对比最上面的一张图,我们在用到框架的时候改变最多的无非以下两个地方,颜色和标题

先说颜色,我们根据自己的需求自定义颜色然后在对应的逻辑里进行颜色替换。

//颜色的设置        self.buttonNormalColor = DK_NORMALTITLE_COLOR;   //未选中标题颜色        self.buttonHighlightColor = DK_SELECTTITLE_COLOR; //选中标题颜色        self.buttonNormalBorderColor =DK_NORMALBORDER_COLOR; //未选中边框颜色        self.buttonSelectBorderColor = DK_SELECTBORDER_COLOR; //选中边框颜色复制代码

然后在这个方法的选中逻辑里进行颜色的变换(注意逻辑)

- (void)buttonSelected:(UIButton *)button;复制代码

然后关于标题和划线,因为试图是一个tableview ,我们处理的地方就在他的组头试图和组尾试图的协议方法里。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;复制代码
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;复制代码

在尾试图的那条虚线,处理两种方法,1:找UI要一张虚线的图,创建试图放上去,简单粗暴,缺点是以后如果需要改变颜色样式需要重新要图。 2:自己绘制虚线。

UIView *foot = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 20)];    foot.backgroundColor = [UIColor whiteColor];    //layer    CAShapeLayer *shapeLayer = [CAShapeLayer layer];        [shapeLayer setFillColor:[[UIColor lightGrayColor] CGColor]];    //设置虚线的颜色 - 颜色请必须设置    [shapeLayer setStrokeColor:[UIColor lightGrayColor].CGColor];        //设置虚线的高度    [shapeLayer setLineWidth:1.0f];        //设置类型    [shapeLayer setLineJoin:kCALineJoinRound];        /*     2.f=每条虚线的长度     2.f=每两条线的之间的间距     */    [shapeLayer setLineDashPattern:     [NSArray arrayWithObjects:[NSNumber numberWithInt:2.f],      [NSNumber numberWithInt:2.f],nil]];        // Setup the path    CGMutablePathRef path1 = CGPathCreateMutable();        /*     代表初始坐标的x,y     y:要和下面的y一样。     */    CGPathMoveToPoint(path1, NULL,10, 10);        /*     代表坐标的x,y     要与上面的y大小一样,才能使平行的线,不然会画出斜线     */    CGPathAddLineToPoint(path1, NULL, width-20,10);        //赋值给shapeLayer    [shapeLayer setPath:path1];        //清除    CGPathRelease(path1);        //可以把self改成任何你想要的UIView.    [[foot layer] addSublayer:shapeLayer];复制代码

注释已经加的很清楚了,但是如果觉得仍然复杂呢,这里放上一个封装好的方法,,一句话实现了虚线的绘制(关于各种线的绘制会继续封装加入新的东西,欢迎star)。

//调用绘制虚线        [[GS_DrawLineManager manager]GS_DrawImaginaryLineWithStartPoint:CGPointMake(20, 100) EndPoint:CGPointMake(300, 100) LineColor:[UIColor blackColor] LineHeight:1.0f InView:view];复制代码

  • 商品数量增加控件

这个控件在购物车界面还是不可缺少的吧,实现方法一样我们可以自己封装,自己去设置他的控件的安排和逻辑的处理,如下图
但是如果要是不想封装的话这里就放一个网上看到的例子吧, ###页面缓冲动画效果封装

  • 页面缓冲加载动画 比如美团和饿了么,在切换页面数据加载出现之前会有缓冲动画出现,那么我们怎么在我们的软件中实现呢,根据网上资料和图片以及自己的整理封装,实现一句话调用加载,一句话消失,类似于SVProgressHUD的用法。

调用方法代码如下:

view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];    [self.view addSubview:view];        //加载转场动画    [[GS_SVPmanager manager]GS_SVPshowGif:self];        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{                //调用绘制虚线        [[GS_DrawLineManager manager]GS_DrawImaginaryLineWithStartPoint:CGPointMake(20, 100) EndPoint:CGPointMake(300, 100) LineColor:[UIColor blackColor] LineHeight:1.0f InView:view];            //动画加载结束    [[GS_SVPmanager manager]GS_SVPhidGif:self];                NSLog(@"结束了");    });复制代码

如下图所示,我们创建一个单利用来控制GIF显示和消失,单例文件的位置如下图:

这里放上git地址: ###后记 每一个成熟的软件都不是简简单单的几篇文章能够说明的,上一篇介绍了框架和代码风格,今天介绍了几种常用的控件,但是其中为说到的地方还有很多,有时间会继续补充更新。希望对用到这一块的有所帮助。

转载地址:http://xjyto.baihongyu.com/

你可能感兴趣的文章
听说技术大佬们离不开这些App
查看>>
3600 票价的技术大会,2 大专题免费直播,看不看?
查看>>
又拍云刘平阳,理性竞争下的技术品牌提升之道
查看>>
小米战略入股TCL 雷军:要继续做大做强大家电业务
查看>>
企业技术展望:黑科技解放“黄金”劳动力
查看>>
年终调查:Apache Flink成大数据最大赢家,市场预计130亿美元!
查看>>
刘强东放权:称管理层稳定 个人注意力放在战略及新业务
查看>>
返乡旅客突发疾病 列车人员合力施救
查看>>
「每天一道面试题」JDK自带的命令行工具有哪些?
查看>>
云南优化口岸营商环境 将加快鲜活商品通关
查看>>
“香港最地道社区”呼吸脉博:浓郁人情味引八方客
查看>>
内蒙古举办冰雪火锅节 千人共享火锅美食
查看>>
香港消委会:市面58款食品高糖或高脂 9成含基因致癌物
查看>>
乘网约车需实名吗?15万名网友热议 近九成赞成
查看>>
第二届快手幸福乡村创业学院开幕 43位乡村网红“入学”
查看>>
Python开发2年后,拿到40万年薪必须遵循的1个原则
查看>>
迅雷冻结3亿链克,停止国际版支持,这个区块链项目基本凉了
查看>>
王思聪开怼北大校长,鸿鹄读成鸿hao是准备不足,做了不好的榜样
查看>>
给Java开发者的10个大数据工具和框架,看到就是赚到!
查看>>
最前线丨阿里云年营收首次突破200亿元,成亚洲最大云服务公司
查看>>