我在基于視圖的模式(不是基于單元格)中有一個 NSTableView 和usesAutomaticRowHeights=YES。行具有可能隨時更改的動態高度。此設定成功地增加了表視圖行(行內容永遠不會被剪裁),但是當行變短時,表視圖行不會縮小到固有的行視圖高度。在布局后的表格視圖上呼叫 noteHeightOfRowsWithIndexesChanged: 似乎沒有解決問題,我的 tableView:heightOfRow: 在 noteHeightOfRowsWithIndexesChanged: 之后也沒有再次呼叫。
關于在基于 NSView 的具有可變行高的 tableviews 中使用自動布局,有什么我遺漏的/沒有記錄的嗎?畢竟,增長行總是在沒有任何額外代碼的情況下作業,它們只是不會自行縮小。
NSTableView* tv = [[NSTableView alloc] init];
[tv setTranslatesAutoresizingMaskIntoConstraints:NO];
[tv setUsesAutomaticRowHeights:YES]; // Use auto layout for row height
NSTableColumn* column = [[NSTableColumn alloc] init];
[tv addTableColumn:column];
// Set table view data source and delegate, rows are then loaded...
uj5u.com熱心網友回復:
除錯了默認的表視圖布局很久,終于找到了問題所在。當對行內容視圖使用自動布局時,表視圖行視圖帶有一些干擾內容的自動調整大小掩碼設定。您需要將行視圖 設定translatesAutoresizingMaskIntoConstraints為NO. 這可以使用委托方法為基于視圖的 NSTableView 實作tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row:
- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row
{
// Remember that rowView != row content view!
[rowView setTranslatesAutoresizingMaskIntoConstraints:NO]; // Disable constraints interfering with row view content
}
有趣的是,如果由于動態高度增加,內容沒有縮小超過初始行高或最大行高,這似乎不是問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390159.html
