Swift3.0 UIButton类标签个数适配屏宽

正在做的电商类app其中的商品规格选项界面模仿的淘宝界面及功能,其中一个需求就是把服务器返回的规格逐个显示出来,并添加单选效果。先说根据服务器数据规格显示问题,类似标签,当所给的数据较多时,单个按钮长度依规格字符长短而定,一屏铺开能显示几个十几个,宽度不够的改行显示,我数学不好,这其中涉及到的数学计算确实废了我不少脑细胞,网上各类demo繁简不一,理清了其中的逻辑改写了一个Swift版的:
            var butX:CGFloat = 15.0
            var butY = skuStyleLabel.frame.maxY+10;
            
            for index in 0 ..< btnCount! {
                
                //宽度自适应
                let fontDict = [NSFontAttributeName: UIFont .systemFont(ofSize: 15.0)]
                let frame_W = NSString(string: widthArray[index]).size(attributes: fontDict)
                if butX+frame_W.width+15.0>kWidth-15.0 {
                    butX = 15.0
                    butY += 55.0
                }
                
                let skuBtn = UIButton(frame: CGRect(x: butX, y: butY, width: frame_W.width+15, height: 35))
                skuBtn.setTitle(widthArray[index], for: .normal)
                skuBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15.0)
                
                skuBtn.setTitleColor(UIColor.yl_colorWithHex(0x343434), for: .normal)
                skuBtn.setTitleColor(UIColor.yl_colorWithHex(0xb4282d), for: .selected)
                
                skuBtn.layer.borderWidth = 1.0
                skuBtn.layer.borderColor = UIColor.yl_colorWithHex(0x979797).cgColor
                skuBtn.layer.cornerRadius = 5
                skuBtn.tag = index+300
                skuBtn.addTarget(self, action: #selector(GoodsSkuCell.selectSku), for: .touchUpInside)
                
                self.addSubview(skuBtn)
                butX = skuBtn.frame.maxX + 15
                
            }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值