iOS 购物车

作者: 1剑天下 | 来源:发表于2017-07-12 11:43 被阅读504次

先看效果图

add.gif

功能需求

  1. 多选,单选,全选,店铺全选
  1. 商店满减活动
  2. 十进制价钱计算
  3. 满X元免运费
  4. 点击商品静如详情,点击店铺跳转店铺主页
  5. 侧滑删除,以及数量添加

首先说明一下数据结构

  • 购物车信息


    BA6CD95D-371E-49B0-AEBD-455E82ECDC09.png
  1. 购物车CartList下的集合类容


    7B9ABE72-4281-4352-B12E-7137B63A5D46.png
  2. 运费信息


    5447F79C-798F-4781-BF71-01D903BFFC66.png

UI布局

FD87063B-5921-4AE5-94A2-2559721A7101.png

代码部分

NSDecimalNumber:在iOS开发中,和货币价格计算相关的,需要注意计算精度的问题。即使只是两位小数,也会出现误差。使用float类型运算,是完全不够的,NSDecimalNumber这个类是NSNumber的不可变子类。苹果针对浮点型计算时存在精度计算误差的问题而提供的一个计算类,它是基于10进制的定点计算保证了精度不会缺失。同时也可以定制精度的取正类型:向上取正、向下去正、四舍五入等。相对与浮点类型的计算,NSDecimalNumber提供了更加精准的计算。

// 这是整个购物车计算的核心,每一次选中商品,添加,或者删除,都会重新将整个购物车里面的商品取出来,判断是否选中,如果选中加入计算,更改UI
#pragma mark- 计算价钱
-(void)jisuanPrice
{
    self.totalprice = @"0";
    self.Actualprice=@"0";
    self.GoodsSelectCount = 0;
    self.canMadeCoup = @"0";
    for (int i=0; i<self.dataArr.count; i++) {
        
        HPShopCarModel * ShopCarModel =[self.dataArr objectAtIndex:i];
        ShopCarModel.currentSelectprice=@"0";
        for (int m = 0 ; m <ShopCarModel.content.count; m++) {
            
            HPShopdetailModel * modeldetail = [ShopCarModel.content objectAtIndex:m];
            if (modeldetail.isSelect) {
                
                NSDecimalNumber *count = [NSDecimalNumber decimalNumberWithString:modeldetail.count];
                NSDecimalNumber *decimalNumber1 = [[NSDecimalNumber decimalNumberWithString: modeldetail.price] decimalNumberByMultiplyingBy:count];
                NSDecimalNumber *decimalNumber2 = [NSDecimalNumber decimalNumberWithString:ShopCarModel.currentSelectprice];
                //加
                ShopCarModel.currentSelectprice = [[decimalNumber1 decimalNumberByAdding:decimalNumber2] stringValue];
                self.GoodsSelectCount = [modeldetail.count integerValue]+self.GoodsSelectCount;
            }
            
            
        }
        NSDecimalNumber *decimalNumber1 = [NSDecimalNumber decimalNumberWithString: self.totalprice];
        
        NSDecimalNumber *decimalNumber2 = [NSDecimalNumber decimalNumberWithString:ShopCarModel.currentSelectprice];
        NSDecimalNumber *decimalNumber3 = [NSDecimalNumber decimalNumberWithString:ShopCarModel.cut_price];
        //加
        self.totalprice =  [[decimalNumber1 decimalNumberByAdding:decimalNumber2] stringValue];
        
        NSLog(@"ShopCarModel.full_price:%@.....ShopCarModel.currentSelectprice:%@...ShopCarModel.cut_price:%@",ShopCarModel.full_price,ShopCarModel.currentSelectprice,ShopCarModel.cut_price);
        NSDecimalNumber *decimalNumber4 = [NSDecimalNumber decimalNumberWithString:self.Actualprice];
        
        self.Actualprice =[[decimalNumber4 decimalNumberByAdding:decimalNumber2] stringValue];
        
        
        if ([ShopCarModel.full_price doubleValue]<[ShopCarModel.currentSelectprice doubleValue]&&[ShopCarModel.full_price doubleValue]>0) {
            // 计算实际应付的金额,(符合满减条件去掉满减的金额)
            NSDecimalNumber *decimalNumber5 = [NSDecimalNumber decimalNumberWithString:self.Actualprice];
            self.Actualprice =[[decimalNumber5 decimalNumberBySubtracting:decimalNumber3] stringValue];
            self.canMadeCoup = @"1";
            
            
        }
        
        
    }
    
    // 修改底部钱数显示

    
    _BottomView.totalprice = [DJTUtility notRounding: [NSDecimalNumber decimalNumberWithString:self.totalprice] afterPoint:2];
    _BottomView.Actualprice = [DJTUtility notRounding: [NSDecimalNumber decimalNumberWithString:self.Actualprice] afterPoint:2];
    NSLog(@"totalprice:%@=====%@",self.totalprice,[NSString stringWithFormat:@"%.2lf",[self.totalprice floatValue]]);
    [_BottomView.Settlement_btn setTitle:[NSString stringWithFormat:@"结算(%ld)",self.GoodsSelectCount] forState:UIControlStateNormal];
    [self aboutfreihtUI];
}

购物车demo Github下载
https://github.com/LxwYl/XW-ShopCar

京东商品详情 高仿
http://www.jianshu.com/p/c51b1e4b0f8b

相关文章

  • 20170724  输入框,始于UIScrollView

    iOS开发——做购物车,看我就够了 iOS 走近商城 APP(二 购物车常用控件) iOS开发之顶部状态栏stat...

  • iOS 一分钟搞定加入购物车的交互动画

    iOS 一分钟搞定加入购物车的交互动画 iOS 一分钟搞定加入购物车的交互动画

  • iOS-购物车动画

    参考:iOS开发笔记 | 仿京东的加入购物车动画、iOS 一分钟搞定加入购物车的交互动画 很多动画属性不太熟悉 直...

  • iOS购物车

    第一次写简书,望各位大大口下留情; 因为公司需要,所以用到了购物的功能,搜索了很多demo,没有合适的,因为要么太...

  • iOS 购物车

    整理一个简单的购物车小demo。主要利用“通知”来实现事件的传递。通知的发布和监听、移除通知。(资料来源于小码哥)...

  • iOS 购物车

    先看效果图 功能需求 多选,单选,全选,店铺全选 商店满减活动 十进制价钱计算 满X元免运费 点击商品静如详情,点...

  • iOS 购物车

    1、加入购物车动画界面比较简单,画面比较丑,但是基本功能可以实现 在自定制cell界面 在.m文件 在viewCo...

  • 资料(持续更新...)

    iOS购物车:http://www.jianshu.com/p/07125705b8d1?utm_campaign...

  • iOS高仿QQ侧滑控件、下载框架、动画效果、扫一扫、颜色变化、K

    iOS精选源码 仿京东"加入购物车"转场动画 ColorTool(颜色转换) Swift 专业版K线 TableV...

  • iOS 实现购物车

    最近做商城项目,购物车我觉得是最麻烦的家伙,记录下实现思路和逻辑 第一个点 选中与不选中的状态处理 我是用mode...

网友评论

    本文标题:iOS 购物车

    本文链接:https://www.haomeiwen.com/subject/teochxtx.html