Column Widths

Control how column widths are calculated to fit your content perfectly.

Two Approaches

  1. Auto Layout - Uses systemLayoutSizeFitting on your cells. Accurate, reliable, works with any cell complexity.
  2. Text Estimation - Estimates widths from character counts. Faster for large datasets with simple text cells.
var config = DataTableConfiguration()
config.columnWidthMode = .fitContentAutoLayout(sample: 50)

This samples 50 cells per column and uses the maximum width found. It works with custom cells, multi-line text, Dynamic Type, and any content that can be measured via Auto Layout.

Text Estimation Strategies

StrategyHow It Works
.hybridCombines estimation with sampling. Good default.
.estimatedAveragecharCount x avgWidth averaged. Fastest, may clip outliers.
.sampledMaxMeasures a sample, uses maximum.
.maxMeasuredMeasures every row. Most accurate, slowest.
.percentileMeasuredUses 95th percentile to ignore extreme outliers.
config.columnWidthMode = .fitContentText(strategy: .hybrid(sampleSize: 100, averageCharWidth: 7))

Per-Column Overrides

config.columnWidthModeProvider = { columnIndex in
    switch columnIndex {
    case 0:
        return .fixed(width: 60)  // ID column
    case 3:
        return .fitContentAutoLayout(sample: 50)  // Complex cell
    default:
        return nil  // Use global setting
    }
}

Width Constraints

config.minColumnWidth = 80  // Default: 70
config.maxColumnWidth = 300  // Default: nil (no cap)

Header width (including sort indicator) always takes precedence.

Scale to Fill

// Scale columns to fill the frame width
config.shouldContentWidthScaleToFillFrame = true  // Default