NSTextField с автоматическим изменением размера текста выглядит ужасно в NSCollectionView - PullRequest
0 голосов
/ 05 апреля 2011

У меня тут небольшая проблема.У меня есть NSCollectionView с коллекцией представлений, которые имеют NSTextField, который показывает имена шрифтов в этих шрифтах.Вот скриншот: screenie

Как видите, некоторые шрифты выглядят сбитыми с толку, их размер шрифта 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)]];

Как я могу это исправить?Это выглядит ужасно.Заранее спасибо.

1 Ответ

0 голосов
/ 05 апреля 2011

Похоже, это скорее проблема с анимацией представления коллекции. Вы включили wantLayers для представления элемента коллекции прототипов? Попробуйте выключить его. Также попробуйте поместить непрозрачное представление за текстовым полем, чтобы за ним не было прозрачности вплоть до самого представления коллекции, и посмотрите, что это улучшает.

Если это не сработает, уточните, почему и как именно вы используете -initWithFrame: метод текстового поля ... кажется странным способом сделать что-то.

...