Как я могу обновить размер ячеек в зависимости от времени, которое прошло - PullRequest
0 голосов
/ 23 мая 2019

Я хочу создать приложение, которое будет отслеживать, где я провожу свое время. Простое приложение, где ячейки могут быть изменены и просто запускать таймеры при нажатии. Прошедшее время - INT, а размер ячеек - CGFloat. Я хочу, чтобы размер ячеек автоматически обновлялся в зависимости от прошедшего времени.

Я пытался вызвать метод, который имеет дело с размером ячеек при нажатии кнопки, просто чтобы посмотреть, работает ли это. Я также включил число как CGFloat в уравнении. Ни один из этих методов не сработал.

//this is the code that deals with the sizing of the cells. 

override func prepare() {
// 1
    guard cache.isEmpty == true, let collectionView = collectionView             else {
        return
    }
// 2
    let columnWidth = contentWidth / CGFloat(numberOfColumns)
    var xOffset = [CGFloat]()
    for column in 0 ..< numberOfColumns {
        xOffset.append(CGFloat(column) * columnWidth)
    }
    var column = 0
    var yOffset = [CGFloat](repeating: 0, count: numberOfColumns)
    let timerCount = PhotoCell()
    let savedTime = CGFloat(timerCount.counter)

// 3
    for item in 0 ..< collectionView.numberOfItems(inSection: 0) {

        let indexPath = IndexPath(item: item, section: 0)

    // 4
        let photoHeight = delegate.collectionView(collectionView, heightForPhotoAtIndexPath: indexPath)
        let height = cellPadding * 2 + (photoHeight / 20 + savedTime)
        let frame = CGRect(x: xOffset[column], y: yOffset[column], width: columnWidth, height: height)
        let insetFrame = frame.insetBy(dx: cellPadding, dy: cellPadding)

    // 5
        let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath)
        attributes.frame = insetFrame
        cache.append(attributes)

    // 6
        contentHeight = max(contentHeight, frame.maxY)
        yOffset[column] = yOffset[column] + height

        column = column < (numberOfColumns - 1) ? (column + 1) : 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...