Я имею NSCollectionView
это содержит набор CustomViews
. Первоначально это разместило подпредставления рядом в столбцы и строки как сетка. Я затем установил Columns
свойство в IB к 1, поэтому теперь это просто отображает их один за другим в строках. Однако даже при том, что мой CustomView
400 пкс шириной, это установлено автоизменить размер, NSCollectionView
400 пкс шириной, и это установлено на 1 столбец, подпредставления оттянуты приблизительно 80 пкс шириной.
Я знаю, что могу обойти это путем вызова:
CGFloat width = collectionView.bounds.size.width;
NSSize size = NSMakeSize(width, 85);
[collectionView setMinItemSize:size];
[collectionView setMaxItemSize:size];
Но вставляя этот код awakeFromNib
метод моего WindowController
только устанавливает корректную ширину, когда программа запускается. Когда я изменяю размер окна (и NSCollectionView
автоизменяет размер, поскольку я указал), CustomViews остаются в их первоначально ширина набора.
Я рад заботиться об изменении размеров подпредставлений сам если потребуется, но я довольно плохо знаком с Какао и, может казаться, не нахожу статей, объясняющих, как сделать такую вещь. Кто-то может указать на меня в правильном направлении?
Anthony
Замечательный блог Мэтта Галлахера Cocoa with Love собирается решить эту проблему. На этой неделе он поделился деталями привязки одноколоночного представления, подобного тому, о котором идет речь:
http://cocoawithlove.com/2010/03/designing-view-with-bindings.html
В следующей записи он обещает поделиться остальной частью реализации, которая должна дать вам то, что вы ищете.
(Я должен отметить, что он подклассифицирует NSView напрямую и повторно реализует многие функции NSCollectionView. Похоже, это обычное дело; не многие любят подклассифицировать NSCollectionView.)
Edit: Похоже, он нарушил свое обещание... мы так и не получили это сообщение. Вместо него смотрите ответ tofutim'а ниже.