0

我在这里遇到了一个小问题。我有一个 NSCollectionView 和一组视图,这些视图有一个 NSTextField 显示这些字体中的字体名。这是一个屏幕截图: 屏风

正如你所看到的,有些字体看起来有问题,它们后面有它们的 Interface Builder 字体大小。我使用此代码来设置initWithFrame:NSTextField 的字体大小:

  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)]];

我怎样才能解决这个问题?它看起来很可怕。提前致谢。

4

1 回答 1

0

这似乎更像是集合视图动画的问题。您是否为原型集合项目视图打开了 WantsLayers?尝试将其关闭。还可以尝试在文本字段后面放置一个不透明的视图,这样它后面就没有透明度,一直到集合视图本身,看看这会改善什么。

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

于 2011-04-05T15:34:20.527 回答