• ios13--购物车优化


    //
    //  ViewController.m
    //  03-综合练习
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    // 购物车
    @property (weak, nonatomic) IBOutlet UIView *shopCarView;
    // 添加按钮
    @property (weak, nonatomic) IBOutlet UIButton *addButton;
    // 删除按钮
    @property (weak, nonatomic) IBOutlet UIButton *removeButton;
    // 全局的下标
    //@property (nonatomic, assign) NSInteger index;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    
    /**
     *  添加到购物车
     *
     *  @param button 按钮
     */
    - (IBAction)add:(UIButton *)button {
    /***********************1.定义一些常量*****************************/
        // 1.总列数
        NSInteger allCols = 3;
        // 2.商品的宽度 和 高度
        CGFloat width = 80;
        CGFloat height = 100;
        // 3.求出水平间距 和 垂直间距
        CGFloat hMargin = (self.shopCarView.frame.size.width - allCols * width) / (allCols -1);
        CGFloat vMargin = (self.shopCarView.frame.size.height - 2 * height) / 1;
        // 4. 设置索引
        NSInteger index = self.shopCarView.subviews.count;
        // 5.求出x值
        CGFloat x = (hMargin + width) * (index % allCols);
        CGFloat y = (vMargin + height) * (index / allCols);
        
    /***********************2.创建一个商品*****************************/
      // 1.创建商品的view
        UIView *shopView = [[UIView alloc] init];
        
      // 2.设置frame
        shopView.frame = CGRectMake(x, y, width, height);
        
      // 3.设置背景颜色
        shopView.backgroundColor = [UIColor greenColor];
        
      // 4.添加到购物车
        [self.shopCarView addSubview:shopView];
        
      // 5.创建商品的UIImageView对象
        UIImageView *iconView = [[UIImageView alloc] init];
        iconView.frame = CGRectMake(0, 0, width, width);
        iconView.backgroundColor = [UIColor blueColor];
        [shopView addSubview:iconView];
        
      // 6.创建商品标题对象
        UILabel *titleLabel = [[UILabel alloc] init];
        titleLabel.frame = CGRectMake(0, width, width, height - width);
        titleLabel.backgroundColor = [UIColor yellowColor];
        titleLabel.textAlignment = NSTextAlignmentCenter; // 居中
        [shopView addSubview:titleLabel];
        
    /***********************3.设置数据*****************************/
        // 数值数据
        /*
        // 方式一: (不可取:数据都是一样)
        iconView.image = [UIImage imageNamed:@"danjianbao"];
        titleLabel.text = @"单肩包";
        */
        
        // 方式二 (不可取:太冗余)
        /*
        if (index == 0) {
            iconView.image = [UIImage imageNamed:@"danjianbao"];
            titleLabel.text = @"单肩包";
        }else if (index == 1){
            iconView.image = [UIImage imageNamed:@"qianbao"];
            titleLabel.text = @"钱包";
        }else if (index == 2){
            iconView.image = [UIImage imageNamed:@"danjianbao"];
            titleLabel.text = @"单肩包";
        }else if (index == 3){
            iconView.image = [UIImage imageNamed:@"danjianbao"];
            titleLabel.text = @"单肩包";
        }else if (index == 4){
            iconView.image = [UIImage imageNamed:@"danjianbao"];
            titleLabel.text = @"单肩包";
        }else if (index == 5){
            iconView.image = [UIImage imageNamed:@"danjianbao"];
            titleLabel.text = @"单肩包";
        }
         */
        
        // 方式三 (数组: (两个数组之间没有任何联系,容易出错))
        /*
        NSArray<NSString *> *imageNames = @[@"danjianbao", @"qianbao", @"liantiaobao", @"shoutibao", @"shuangjianbao", @"xiekuabao"];
        NSArray<NSString *> *titleNames = @[@"单肩包", @"钱包", @"链条包", @"手提包", @"双肩包", @"斜挎包"];
        // 设置数据
        iconView.image = [UIImage imageNamed:imageNames[index]];
        titleLabel.text = titleNames[index];
         */
        
        // 方式四 (数组 + 字典)
        NSArray<NSDictionary *> *dataArr = @[
                                             @{@"name":@"单肩包", @"icon":@"danjianbao"},
                                             @{@"name":@"钱包", @"icon":@"qianbao"},
                                             @{@"name":@"链条包", @"icon":@"liantiaobao"},
                                             @{@"name":@"手提包", @"icon":@"shoutibao"},
                                             @{@"name":@"双肩包", @"icon":@"shuangjianbao"},
                                             @{@"name":@"斜挎包", @"icon":@"xiekuabao"}
                                             ];
        // 设置数据
        NSDictionary *dict = dataArr[index];
        iconView.image = [UIImage imageNamed:dict[@"icon"]];
        titleLabel.text = dict[@"name"];
    /***********************4.设置按钮的状态*****************************/
    
        button.enabled = (index != 5);
        
        // 5.设置删除按钮的状态
        self.removeButton.enabled = YES;
        
    }
    
    /**
     *  从购物车中删除
     *
     *  @param button 按钮
     */
    - (IBAction)remove:(UIButton *)button {
        // 1. 删除最后一个商品
        UIView *lastShopView = [self.shopCarView.subviews lastObject];
        [lastShopView removeFromSuperview];
        
        // 3. 设置添加按钮的状态
        self.addButton.enabled = YES;
        
        // 4. 设置删除按钮的状态
        /*
        if (self.shopCarView.subviews.count == 0) {
            self.removeButton.enabled = NO;
        }
         */
        self.removeButton.enabled = (self.shopCarView.subviews.count != 0);
        
    }
    @end
  • 相关阅读:
    html5 新增的页面 元素
    【BZOJ1500】[NOI2005]维修数列 Splay
    【BZOJ1720】[Usaco2006 Jan]Corral the Cows 奶牛围栏 双指针法
    【BZOJ3437】小P的牧场 斜率优化
    【BZOJ1096】[ZJOI2007]仓库建设 斜率优化
    【BZOJ3156】防御准备 斜率优化
    【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分
    【BZOJ4099】Trapped in the Haybales Gold STL
    【BZOJ3387】[Usaco2004 Dec]Fence Obstacle Course栅栏行动 线段树
    【BZOJ3939】[Usaco2015 Feb]Cow Hopscotch 动态规划+线段树
  • 原文地址:https://www.cnblogs.com/yaowen/p/7449672.html
Copyright © 2020-2023  润新知