Я в значительной степени новичок в программировании на OS X.
Я хотел добавить наложение текста в IKImageView, но мой текст не отображается.
В IB я начал с пользовательского NSView, который позже будет вставлен в окно.
Затем я перетащил в него IKImageView, чтобы он занимал большую часть, но не все, вид. (Я планирую добавить другие элементы управления в представление позже)
Я прикрепил основной CustomView к одному контроллеру и подключил IKImageView к другому с именем myImageController. Затем внутри myImageController я импортирую Quartz, QuartzCore и AppKit и пытаюсь добавить текст ("FOO") через awakeFromNib:
- (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 для отображения в универсальном пользовательском представлении. *
Кроме того, когда я попытался сделать setNeedsDisplay для CATextLayer, компилятор указал, что CATextLayer может не знать, что это такое.
(Я не планирую использовать HUD для редактирования - стоит ли мне вообще беспокоиться о IKImageView? Хотя отчасти это всего лишь мои попытки понять взаимосвязь между представлениями, слоями, контроллерами и Интерфейсным Разработчиком ...) 1014 *
Заранее спасибо!