NSOpenGLView в NSScrollView?
У меня есть метод масштабирования для моего NSOpenGLView. Если изображение увеличено, размер кадра NSOpenGLView, порт просмотра и т. Д. Увеличивается. То же самое происходит, если NSOpenGLView уменьшается (размер кадра, порт просмотра и т. Д. Уменьшается). Поэтому мне нужно, чтобы при увеличении изображения, чтобы NSOpenGLView был больше моего окна, должна появиться полоса прокрутки. Поэтому я подумал, что размещение NSOpenGLView в NSScrollView будет моим решением. Но это не так. Это не работает Как тогда я мог это сделать?
1 ответ
Когда вы поместили NSOpenGLView в NSScrollView в Интерфейсном Разработчике, вы должны переопределить методы вашего пользовательского представления:
- (void)awakeFromNib
- здесь есть OpenGL и другие инициализации.- (void)drawRect: (NSRect) dirtyRect
- здесь рендеринг.- (void)setFrame:(NSRect)frame
- вот реакция на изменение размера кадра.
В качестве области просмотра используйте размер visibleRect:
glViewport(0,
0,
self.visibleRect.size.width,
self.visibleRect.size.height);
Если ваш вид мигает, переопределите метод resizeWithOldSuperviewSize
тоже:
- (void)resizeWithOldSuperviewSize:(NSSize)oldSize {
};
Но это взлом, и было бы лучше сделать пользовательскую реализацию представления Clip, если он используется.
Если вы хотите увеличить свой OpenGL вид, просто измените размер его кадра.