我正在创建一个 Cocoa NSWindow,其中(通过 IB)是 QTCaptureView、QTMovieView 和各种按钮和文本字段。
以编程方式,我做了以下事情:
创建了一个新的 QTMovie:
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError
{
QTMovie *movie = [QTMovie movieWithURL:url error:outError];
if (movie){
[self setMovie:movie];
}
return (movie != nil);
}
然后相应地设置 QTMovieView:
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
[movieView setShowsResizeIndicator:YES];
[[movieView window] setShowsResizeIndicator:NO];
mainWindow = [aController window];
[[mainWindow contentView] addSubview:movieView];
}
电影播放良好,我的网络摄像头被捕获并显示。我有两个似乎无法解决的问题;
我想根据 QTMovie 纵横比调整 QTMovieView 的大小。我有点在 IB 中执行此操作,但 QTMovieView 窗口的大小保持不变,只有电影以所需的大小播放。
我还想调整 QTMovieView 的大小并将其移动到 NSWindow 周围。
我在网上搜索并没有找到答案,所以很可能这不是无法完成的事情,而是我的代码有问题。
我一直在使用“QTKit 应用程序教程”文档。
[编辑 25/05/2012]
从第 28 页开始,它描述了如何将窗口大小调整为电影自然大小属性。我跟着这个,但主窗口调整了大小,而不是 QTMovieView 窗口。
[[movieView window] setContentSize:contentSize];
所以我猜我的理解是不正确的,QTMovieView 窗口是主窗口。QTMovieView 窗口所在的没有其他子窗口,只是我放置的那个!
[编辑 26/05/2012]
在 Cocoa 中只有一个窗口并且没有子窗口的概念!要允许拖动 QTMovieView,您必须让它接受鼠标事件。为此,您必须对其进行子类化并覆盖;
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
基本上阅读苹果的“处理鼠标事件”文档。
至于调整大小,我现在正在努力。
[结束编辑]
任何想法将不胜感激。谢谢。