У меня есть NSCollectionView с использованием разделов и макета потока.Первоначальный макет в порядке, но изменение размера окна вызывает перемещение вертикального положения элементов представления коллекции (относительно верхней границы окна).Разрывы секций остаются постоянными относительно верхней границы окна (хорошо).Но элементы, перемещающиеся вверх, заставляют их перекрывать секции и, в конечном итоге, выходить из области окна, когда я уменьшаю высоту окна.
Я думаю, это связано с тем, как макинтош использует дно в качестве источника координат.Изменение размера окна приводит к смещению нижней границы окна.
Для справки здесь я настраиваю свое представление коллекции, включая стандартную компоновку потока.
fileprivate func configureCollectionView() {
let nib = NSNib(nibNamed: "MonitorViewItem", bundle: nil)
mapCollectionView.register(nib, forItemWithIdentifier: NSUserInterfaceItemIdentifier("MonitorViewItem"))
let flowLayout = NSCollectionViewFlowLayout()
flowLayout.itemSize = NSSize(width: 100.0, height: 40.0)
flowLayout.sectionInset = NSEdgeInsets(top: 25.0, left: 10.0, bottom: 10.0, right: 10.0)
flowLayout.minimumInteritemSpacing = 10.0
flowLayout.minimumLineSpacing = 10.0
mapCollectionView.collectionViewLayout = flowLayout
}
Я попытался сделать недействительным макет в своем изменении размера окнафункция делегата.Мой оператор печати подтверждает, что он вызывается при изменении размера окна, но аннулирование макета не решает проблему.
extension MapWindowController: NSWindowDelegate {
func windowDidResize(_ notification: Notification) {
print("got resize")
mapCollectionView.collectionViewLayout!.invalidateLayout()
}
}
До сих пор я не пытался создать подкласс для своего представления и переопределить isFlipped.
Вот моя иерархия окон в моем .xib:
Window
View
Bordered Scroll View - Collection View
Clip View
Map Collection view
Collection View Flow layout
scroller
scroller
Есть предложения по исправлению вертикального положения элемента представления коллекции при изменении размера nswindow?