| | |
| | | static let normalGap: CGFloat = 16 |
| | | static let minGap: CGFloat = 8 |
| | | static let maxRows = 2 |
| | | static let rowHeight: CGFloat = selectedIconSize + 18 |
| | | static let rowGap: CGFloat = 8 |
| | | static let verticalPadding: CGFloat = 6 |
| | | static let indexFontSize: CGFloat = 16 |
| | | static let compressedIndexFontSize: CGFloat = 14 |
| | | static let indexWidth: CGFloat = 18 |
| | |
| | | } |
| | | |
| | | private func appShelfHeight(forRows rows: Int) -> CGFloat { |
| | | switch rows { |
| | | case 0, 1: |
| | | return 92 |
| | | default: |
| | | return 148 |
| | | } |
| | | appShelfRowsHeight(forRows: max(1, rows)) + AppShelfMetrics.verticalPadding |
| | | } |
| | | |
| | | private func appShelfRowsHeight(forRows rows: Int) -> CGFloat { |
| | | let rowCount = max(1, rows) |
| | | return CGFloat(rowCount) * AppShelfMetrics.rowHeight |
| | | + CGFloat(rowCount - 1) * appShelfRowGap(forRows: rowCount) |
| | | } |
| | | |
| | | private func appShelfRowGap(forRows rows: Int) -> CGFloat { |
| | | rows > 1 ? AppShelfMetrics.rowGap : 0 |
| | | } |
| | | |
| | | private var appShelfSlotPadding: CGFloat { |
| | |
| | | let iconSize = appShelfLayout.iconSize |
| | | let gap = appShelfGap(forIconSize: iconSize) |
| | | let itemWidth = appShelfSlotWidth(forIconSize: iconSize) |
| | | let rowHeight: CGFloat = AppShelfMetrics.selectedIconSize + 18 |
| | | let rowGap: CGFloat = appShelfLayout.rows > 1 ? 8 : 0 |
| | | let rowHeight = AppShelfMetrics.rowHeight |
| | | let rowGap = appShelfRowGap(forRows: rows.count) |
| | | let innerWidth = max(1, shelfLayer.bounds.width - 24) |
| | | let maxRowWidth = rows |
| | | .map { widthForAppShelfItems(count: $0.count, itemWidth: itemWidth, gap: gap) } |
| | |
| | | height: shelfLayer.bounds.height |
| | | ) |
| | | |
| | | let totalRowsHeight = CGFloat(rows.count) * rowHeight + CGFloat(max(0, rows.count - 1)) * rowGap |
| | | let totalRowsHeight = appShelfRowsHeight(forRows: rows.count) |
| | | var y = shelfLayer.bounds.midY + totalRowsHeight / 2 - rowHeight |
| | | |
| | | for row in rows { |