Я использовал NSTextView
для редактирования текста, установки цвета и размера шрифта, без установки NSParagraphStyle
.
Теперь я хочу спрятать NStextView
и вынуть NSString
или NSAttributedString
из NSTextView
и нарисовать его на NSView
позади объекта NSTextView
.
Я хочу, чтобы отображаемый текст был точно таким же, как в NSTextView
, включая шрифты, межсловный интервал, высоту строки, межстрочный интервал.
Какие методы должны быть использованы для этого?
Мой нынешний подход заключается в следующем, но эффект не очень хороший.
Высота строки не соответствует таковой в NSTextView
. Также есть проблема с другими деталями.
NSTextView* textView = [[NSTextView alloc]init];
[[self contentView] addSubview:textView positioned:NSWindowAbove relativeTo:myView];
[textView setAutoresizingMask:NSViewWidthSizable];
[textView setMinSize:NSMakeSize(25, 25)];
[textView setMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
[textView setDrawsBackground:NO];
[[textView textContainer] setContainerSize:NSMakeSize(FLT_MAX, FLT_MAX)];
[[textView textContainer] setWidthTracksTextView:NO];
[textView setVerticallyResizable:YES];
[textView setHorizontallyResizable:YES];
[textView setTextColor:[NSColor redColor]];
[textView setFrame: NSMakeRect(200, 200, 25, 25)]; //the textView will auto resize when typing
[textView setFont:[NSFont fontWithName:@"Arial" size:16.0f];
[textView setHidden:NO];
// после ввода я скрою textView и нарисую attributeString в функции drawInRect в myView.
NSRect rct = textView.frame;
[textView setHidden: YES];
NSMutableAttributedString *textDraw = [[NSMutableAttributedString alloc] initWithAttributedString: textView.attributedString];
//i get the defaultParagraphStyle to set to NSMutableAttributedString
[textDraw setAttributes:textView.defaultParagraphStyle range:NSMakeRange(0, textDraw.length)];
NSMutableDictionary *md = [NSMutableDictionary dictionary];
[md setObject:[NSColor redColor] forKey:NSForegroundColorAttributeName];
[textDraw setAttributes:md range:NSMakeRange(0, textDraw.length)];
[textDraw drawInRect:rct];