自定义图像和开关未在正确的位置显示在集合视图控制器中

时间:2018-09-18 15:01:32

标签: ios swift uicollectionview

我的要求是,我需要在集合视图控制器中填充10个电池,并且我需要在6号电池状态中显示并且在7号中需要切换。不需要剩余的电池来显示电池状态和切换。我正在以编程方式添加这两个(电池状态和开关)。

 override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)

        if indexPath.row == 6 {
            let percentage: CGFloat = 0.4

            let imageview:UIImageView=UIImageView(frame: CGRect(x: 10, y: 50, width: 30, height: 18))
            let img : UIImage = UIImage(named:"batteryIcon")!
            imageview.image = img

            let batteryView  = UIView.init(frame: CGRect(x: 10, y: 50, width: 30, height: 18))
            cell.addSubview(batteryView)
            let colorRect = CGRect(x: batteryView.bounds.origin.x, y: batteryView.bounds.origin.y, width: batteryView.bounds.width * percentage, height: batteryView.bounds.height)
            let coloredView = UIView(frame: colorRect)
            coloredView.backgroundColor = UIColor.green
            batteryView.addSubview(coloredView)
            cell.contentView.addSubview(imageview)
        } else if indexPath.row == 7 {
            let switchDemo = UISwitch(frame: CGRect(x: 10, y: 40, width: 37, height: 18))
            switchDemo.isOn = true
            switchDemo.setOn(true, animated: false)
            switchDemo.transform = CGAffineTransform(scaleX: 0.70, y: 0.70)
            switchDemo.addTarget(self, action: #selector(switchValueDidChange), for: .valueChanged)
            cell.contentView.addSubview(switchDemo)
        }
        return cell
    }

在这里工作正常。但是问题是当我调用“ collectionView.reloadData()”时,除了显示电池状态并切换6Th和7Th电池外,这两个电池也出现在其他电池中。

我没有得到,我犯了什么错误。 为了更好地理解我的要求,我正在共享一张图片。 enter image description here

0 个答案:

没有答案