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
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7449672.html,如需转载请自行联系原作者

相关文章
|
7月前
|
Web App开发 数据安全/隐私保护 iOS开发
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
|
存储 缓存 算法
iOS 常见触发离屏渲染场景及优化方案总结
iOS 常见触发离屏渲染场景及优化方案总结
718 0
iOS 常见触发离屏渲染场景及优化方案总结
|
7天前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
16 2
|
4月前
|
监控 Linux iOS开发
如何使用克魔开发助手优化iOS应用性能
如何使用克魔开发助手优化iOS应用性能
34 1
|
传感器 缓存 编译器
iOS应用程序优化
卡顿优化;耗电优化;APP启动优化
97 0
|
存储 安全 iOS开发
iOS-底层原理 32:启动优化(一)基本概念
iOS-底层原理 32:启动优化(一)基本概念
112 0
iOS-底层原理 32:启动优化(一)基本概念
|
安全 开发工具 iOS开发
iOS优化App启动时间优化(2021-09更新)
当用户按下Home键的时候,iOS的App并不会马上被杀掉进程,还会继续存活若干时间。理想情况下,用户点击App的图标再次回来的时候,App几乎不需要做什么,就可以还原到退出前的状态,继续为用户服务。这种持续存活的情况下启动App。
308 0
iOS优化App启动时间优化(2021-09更新)
|
监控 安全 程序员
IOS APP启动优化
作为程序猿来说,“性能优化”是我们都很熟悉的词,也是我们需要不断努⼒以及持续进⾏的事情;其实优化 是⼀个很⼤的课题,因为细分来说的话有⼤⼤⼩⼩⼗⼏种优化⽅向 ,但是切忌在实际开发过程中不能盲⽬的 为了优化⽽优化,这样有时可能会造成适得其反的负效果,需要我们根据实际场景以及业务需求进⾏合理优 化。接下来进⼊正题,本⽂将会以iOS App的启动优化为展开点进⾏探讨。
157 0
IOS APP启动优化
|
缓存 编解码 监控
iOS-底层原理 34:界面优化方案
iOS-底层原理 34:界面优化方案
173 0
iOS-底层原理 34:界面优化方案
|
存储 缓存 安全
iOS-底层原理 32:启动优化(三)二进制重排
iOS-底层原理 32:启动优化(三)二进制重排
213 0
iOS-底层原理 32:启动优化(三)二进制重排