我可以将CATextLayer添加到IKImageView

时间:2012-01-17 21:51:34

标签: cocoa calayer ikimageview

我几乎是OS X编程的新手。 我想在IKImageView中添加文本叠加层,但我的文字没有显示出来。

在IB中,我开始使用自定义NSView,稍后我将其嵌入到窗口中。 然后我将IKImageView拖入其中,以便占用视图的大部分,但不是全部。 (我打算稍后在视图中添加其他控件)

我将主CustomView附加到一个控制器,并将IKImageView附加到另一个名为myImageController的控件上。然后在myImageController中,导入Quartz,QuartzCore和AppKit并尝试通过awakeFromNib添加文本(“FOO”):

- (void) awakeFromNib {
    [super awakeFromNib];

    self.view.layer = [CALayer layer];
    self.view.wantsLayer = YES;

    NSLog(@"SVH - myImageController awakeFromNib self.frame %@",NSStringFromRect(self.view.frame));
    NSLog(@"SVH - myImageController awakeFromNib self.bounds %@",NSStringFromRect(self.view.bounds));

    self.view.layer.frame = self.view.bounds;
    NSLog(@"SVH - myImageController awakeFromNib self.layer.frame %@",NSStringFromRect(self.view.layer.frame));
    NSLog(@"SVH - myImageController awakeFromNib self.layer.bounds %@",NSStringFromRect(self.view.layer.bounds));

    CATextLayer *overlayLayer = [CATextLayer layer];
    overlayLayer.frame = self.view.layer.bounds;

    [overlayLayer setFont:@"Helvetica"];
    [overlayLayer setFontSize:30.0f];
    [overlayLayer setShadowOpacity:.9f];
    [overlayLayer setString:@"FOO"];

    // TRY 1:
    // [self.view.layer addSublayer:overlayLayer];

    // TRY 2:
    // [self setOverlay:overlayLayer forType:IKOverlayTypeImage];

    // TRY 3:
    [self.view setLayer:overlayLayer];

    // Errored out when I tried this:
    // [overlayLayer setNeedsDisplay:YES];


    NSLog(@"SVH - myImageController - awakeFromNib done");
}

我尝试了3种不同的方式,但我不能让“FOO”显示出来。我希望它能在场景中显示出来(开始为空)。从调试器输出,看起来整个例程被执行。 (没有崩溃)

由于IKImageView是从NSView派生的,我希望能够对NSView做任何我能做的事情,并且我已经能够在通用自定义视图中显示2层CATextLayer。

此外,当我尝试对CATextLayer执行“setNeedsDisplay”时,编译器指示CATextLayer可能不知道它是什么。

(我不打算使用编辑HUD - 我是否应该为IKImageView烦恼?虽然这部分只是我试图理解视图,图层,控制器和界面生成器之间的关系......)< / p>

提前致谢!

0 个答案:

没有答案