在NSCollectionView中,具有自动调整文本的NSTextField看起来很糟糕

时间:2011-04-05 14:07:35

标签: objective-c cocoa fonts drawing visual-glitch

我在这里遇到一些问题。我有一个NSCollectionView与一组视图,其中有一个NSTextField显示这些字体的字体名称。这是一个截图: screenie

正如您所看到的,某些字体看起来很奇怪,它们背后有Interface Builder字体大小。我使用此代码在NSTextField的initWithFrame:中设置字体大小:

  float targetWidth = rect.size.width - 10;
  float targetHeight = rect.size.height - 10;

  int i;
  for (i = 10; i < 100; i++) {
    NSDictionary *attrs = [[NSDictionary alloc] initWithObjectsAndKeys:[NSFont fontWithName:[self.font fontName] size:i], NSFontAttributeName, nil];
    NSSize strSize = [[self stringValue] sizeWithAttributes:attrs];
    [attrs release];
    if (strSize.width > targetWidth || strSize.height > targetHeight) {
      break;
    }
  }

  [self setFont:[NSFont fontWithName:[self.font fontName] size:(i - 1)]];

我该如何解决这个问题?它看起来很糟糕。提前谢谢。

1 个答案:

答案 0 :(得分:0)

这几乎看起来更像是集合视图的动画问题。你有没有打开wantLayers作为原型收集项目视图?尝试将其关闭。还可以尝试在文本字段后面放置一个不透明的视图,这样它背后就没有透明度,一直到集合视图本身,看到它可以改进。

如果这不起作用,请澄清为什么以及如何使用-initWithFrame:文本字段的方法...似乎是一种奇怪的做事方式。