控制器:
//
// XMGViewController.h
#import
@interface XMGViewController : UIViewController
@end
//
// XMGViewController.m
#import "XMGViewController.h"
#import "XMGShop.h"
#import "XMGShopView.h"
@interface XMGViewController ()
@property (weak, nonatomic) IBOutlet UIView *shopCarView;
@property (weak, nonatomic) IBOutlet UIButton *addButton;
@property (weak, nonatomic) IBOutlet UIButton *removeButton;
@property (nonatomic, strong) NSArray *dataArr;
@implementation XMGViewController
/**
* 懒加载
*/
// 初始化数据
/**
* 添加到购物车
*
* @param button 按钮
*/
/***********************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];
*/
XMGShopView \*shopView = \[\[XMGShopView alloc\] init\];
shopView.frame = CGRectMake(x, y, width, height);
\[self.shopCarView addSubview:shopView\];
// shopView.titleLabel = nil;
/***********************3.设置数据*****************************/
// 设置数据
XMGShop *shop = self.dataArr[index];
/*
shopView.iconView.image = [UIImage imageNamed:shop.icon];
shopView.titleLabel.text = shop.name;
*/
[shopView setIcon:shop.icon];
[shopView setName:shop.name];
/***********************4.设置按钮的状态*****************************/
button.enabled = (index != );
// 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. 设置删除按钮的状态
self.removeButton.enabled = (self.shopCarView.subviews.count != );
}
@end
自定义控件:
//
// XMGShopView.h
#import
@interface XMGShopView : UIView
// readonly 只会调用get方法
/** 图片控件 */
//@property (nonatomic, weak, readonly) UIImageView *iconView;// [self addSubview:iconView];已经有强指针引用了,这里用weak
/** 标题控件 */
//@property (nonatomic, weak, readonly) UILabel *titleLabel;
// 提供接口方法
//
// XMGShopView.m
#import "XMGShopView.h"
@interface XMGShopView () //扩展属性
@property (nonatomic, strong) UIImageView *iconView;//[self addSubview:iconView];有强指针指向了,用weak
@property (nonatomic, strong) UILabel *titleLabel;
@end
@implementation XMGShopView
/**
* 初始化子控件(不要设置frame)
*
*/
(instancetype)init{
if (self = [super init]) {
// 1.创建商品的UIImageView对象
UIImageView *iconView = [[UIImageView alloc] init];
iconView.backgroundColor = [UIColor blueColor];
[self addSubview:iconView];
_iconView = iconView;
// 2.创建商品标题对象
UILabel \*titleLabel = \[\[UILabel alloc\] init\];
titleLabel.backgroundColor = \[UIColor yellowColor\];
titleLabel.textAlignment = NSTextAlignmentCenter; // 居中
\[self addSubview:titleLabel\];
\_titleLabel = titleLabel;
}
return self;
}
/**
* 布局子控件(可以拿到frame)
*/
(void)layoutSubviews{
// 0.一定要调用super
[super layoutSubviews];
// 1.获取当前控件的尺寸
CGFloat width = self.frame.size.width;
CGFloat height = self.frame.size.height;
// 2.设置子控件的frame
self.iconView.frame = CGRectMake(, , width, width);
self.titleLabel.frame = CGRectMake(, width, width, height - width);
}
(void)setIcon:(NSString *)icon{
// 设置数据
self.iconView.image = [UIImage imageNamed:icon];
}
(void)setName:(NSString *)name{
// 设置数据
self.titleLabel.text = name;
}
bean:
//
// XMGShop.h
#import
@interface XMGShop : NSObject
/** 图片的名称 */
@property (nonatomic, copy) NSString *icon;
/** 商品的名称 */
@property (nonatomic, copy) NSString *name;
// 提供构造方法
/*
(instancetype)initWithIcon: (NSString *)icon name: (NSString *)name;
(instancetype)shopWithIcon: (NSString *)icon name: (NSString *)name;
*/
(instancetype)initWithDict:(NSDictionary *)dict;
(instancetype)shopWithDict:(NSDictionary *)dict;
//
// XMGShop.m
#import "XMGShop.h"
@implementation XMGShop
/*
(instancetype)initWithIcon:(NSString *)icon name:(NSString *)name{
if (self = [super init]) {
self.icon = icon;
self.name = name;
}
return self;
}
(instancetype)shopWithIcon:(NSString *)icon name:(NSString *)name{
return [[self alloc] initWithIcon:icon name:name];
}
*/
(instancetype)initWithDict:(NSDictionary *)dict{
if (self = [super init]) {
self.icon = dict[@"icon"];
self.name = dict[@"name"];
}
return self;
}
(instancetype)shopWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章