关于安卓Sku思路.——参考博客
相关概念:
- SKU=Stock Keeping Unit(库存量单位)。即库存进出计量的基本单元,可以是以件,盒,托盘等为单位。
- SKU这是对于大型连锁超市DC(配送中心)物流管理的一个必要的方法。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。
- 单品:对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性与其他商品存在不同时,可称为一个单品。
最近公司有添加SKU功能的需求。之前这块原计划由同事负责。后来计划有变,由我负责。同事把之前调研的一个Demo发给了我。由OC写成。运行之后看效果优良,就阅读源码,为了减少文件量,我翻译成了Swift版。Demo由同事给我,不知道出处,如果原作者有缘看到文章并下载,看到像自己的作品,不必惊讶,请留下痕迹。
代码小简介:
把Sku选择部分封装成了视图类StandardsView 实例化一个Sku视图let standView = StandardsView(frame:CGRect.zero)
配置商品图片、价格信息、Title提示 以及 自定义按钮
standView.mainImgView.image = img standView.priceLab.text = "¥100.0" standView.tipLab.text = "请选择规格" standView.goodNum.text = "库存 10件" standView.customBtns = ["加入购物车","立即购买"]
配置商品属性模型:
let tempClassInfo1 = standardClassInfo(class_Id: "100", stand_ClassName: "红色")
let tempClassInfo2 = standardClassInfo(class_Id: "101", stand_ClassName: "蓝色")
let tempClassInfoArr = [tempClassInfo1,tempClassInfo2]
let tempModel = StandardModel.standardModel(classInfo: tempClassInfoArr, standName: "颜色")
let tempClassInfo3 = standardClassInfo.standard_ClassInfo(classId: "102", standClassName: "XL")
let tempClassInfo4 = standardClassInfo.standard_ClassInfo(classId: "103", standClassName: "XXL")
let tempClassInfo5 = standardClassInfo.standard_ClassInfo(classId: "104", standClassName: "XXXL")
let tempClassInfoArr2 = [tempClassInfo3,tempClassInfo4,tempClassInfo5]
let tempModel2 = StandardModel.standardModel(classInfo: tempClassInfoArr2, standName: "尺寸")
standView.standardArr = [tempModel,tempModel2]
代理方法:
//MARK:standardView Delegate
/*自定义按键*/
func standardView(standardsView: StandardsView, cusBtnAction: UIButton) {
if cusBtnAction.tag == 0 {
//将商品图片抛到指定点
standardsView.throwGood(desPoint: CGPoint.init(x: 200, y: 100), duration: 1.6, height: 150, scale: 20)
}else{
standardsView.dismiss()
}
}
/*点击规格代理*/
func standardView(standardsView: StandardsView, selBtnAction: UIButton, selID: String, standName: String, idx: NSInteger) {
NSLog("selectID = %@ standName = %@ index = %ld", selID,standName,idx)
}
//设置自定义Btn的属性
func standardView(standardsView: StandardsView, btn: UIButton) {
if btn.tag - 100 == 0 {
btn.backgroundColor = UIColor.yellow
}else if(btn.tag - 100 == 1){
btn.backgroundColor = UIColor.orange
}
}
- 一共三种动画效果 使用枚举进行配置
enum StandsViewShowAnimationType : NSInteger { case FromBelow = 0,Flash,ShowFromLeft,Custom = 0xFFFF } enum StandsViewDismissAnimationType : NSInteger { case DisFromBelow = 0,Flash,DisToRight,Custom = 0xFFFF }
想看效果就下载代码运行一下。
感谢原作者和我同事的分享,写这篇文章,一个为记录,一是为发扬受人分享、分享予人精神。
欢迎感兴趣的同行吐槽、使用、继续完善、提意见、教做人等。