我的NSOpenGLView有缩放方法。如果图像放大,则NSOpenGLView框架大小,视图端口等正在增加。如果NSOpenGLView被缩小(帧大小,视口等等正在减少),也会发生同样的事情。所以我需要,如果图像被放大,以便NSOpenGLView比我的窗口大,滚动条应该出现。所以我认为将NSOpenGLView放到NSScrollView将是我的解决方案。但事实并非如此。它不起作用。我怎么能这样做?
答案 0 :(得分:0)
当您在Interface Builder中将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视图,只需更改其帧大小。