Column Widths
Control how column widths are calculated to fit your content perfectly.
Two Approaches
- Auto Layout - Uses
systemLayoutSizeFittingon your cells. Accurate, reliable, works with any cell complexity. - Text Estimation - Estimates widths from character counts. Faster for large datasets with simple text cells.
Auto Layout (Recommended)
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
| Strategy | How It Works |
|---|---|
| .hybrid | Combines estimation with sampling. Good default. |
| .estimatedAverage | charCount x avgWidth averaged. Fastest, may clip outliers. |
| .sampledMax | Measures a sample, uses maximum. |
| .maxMeasured | Measures every row. Most accurate, slowest. |
| .percentileMeasured | Uses 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