0

我在处理自定义日历时遇到了困难。每天都在一个内Array,然后放入定制CollectionViewCells中。

在当天的单元格内,我想放置一种“标记”(我UIProgressBar为此使用 a)来显示当天的进度。表示在今天中午,UIProgressBar应该是 0.5 等等。

为了处理这个问题,我有以下函数,它返回一个带一位小数的浮点数,以便在UIProgressBar

    func getPercentage() -> Float {

        var cal = Calendar(identifier: .gregorian)
        cal.timeZone = TimeZone(abbreviation: "UTC")!
        let hours = cal.component(.hour, from: Date())
        let minutes = cal.component(.minute, from: Date())

        let allHours = Float(hours) + (Float(minutes) / 60)
        
        let result = round((allTimeInHours / 24) * 10) / 10
        
        return allTimeInPercent
    }

cellForItemAt indexPath即时消息中检查单元格是否是今天的单元格,如果是这种情况,我将调用该getPercentage()方法以相应地UIProgressBar在单元格内设置:

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: MyCollectionViewCell.identifier, for: indexPath) as! MyCollectionViewCell
        



    //other functionality + cell-setup
 
        
        if dateArray[indexPath.item] == todayAsDate() {

            cell.progressBar.isHidden = false
            cell.progressBar.progress = getPercentageOfDay()

        } else {

            cell.progressBar.isHidden = true
        }
        
        return cell
    }

到目前为止一切正常,看起来像这样:

用户界面图片

但是,每当我转到主屏幕然后返回应用程序时,UIProgressBar总是设置为 1.0。

在此处输入图像描述

通过 AppSwitcher 完全关闭应用程序并重新启动应用程序后,一切正常。

我猜有一个问题,因为我使用dequeueReusableCells但我并没有真正落后。我不知道 1.0UIProgressBar来自哪里,即使我更改了情节提要中的默认值,结果也是一样的。

此外,如果有人建议使用其他东西,而不是UIProgressBar我对任何想法持开放态度。实际上,我更愿意让垂直线根据一天中的时间从左到右移动。

我几乎是一个初学者,很高兴有任何提示!:)

4

0 回答 0