Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在NSCollectionView中,具有自动调整文本大小的NSTextField看起来很糟糕_Objective C_Cocoa_Fonts_Drawing_Visual Glitch - Fatal编程技术网

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

Objective c 在NSCollectionView中,具有自动调整文本大小的NSTextField看起来很糟糕,objective-c,cocoa,fonts,drawing,visual-glitch,Objective C,Cocoa,Fonts,Drawing,Visual Glitch,我这里有点小问题。我有一个NSCollectionView,其中包含一个视图集合,该集合有一个NSTextField,它以这些字体显示字体名称。以下是一个屏幕截图: 正如您所看到的,有些字体看起来很炫目,它们后面有自己的Interface Builder字体大小。我使用此代码在NSTEXT字段的initWithFrame:中设置字体大小: float targetWidth = rect.size.width - 10; float targetHeight = rect.size.h

我这里有点小问题。我有一个NSCollectionView,其中包含一个视图集合,该集合有一个NSTextField,它以这些字体显示字体名称。以下是一个屏幕截图:

正如您所看到的,有些字体看起来很炫目,它们后面有自己的Interface Builder字体大小。我使用此代码在NSTEXT字段的
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)]];
float targetWidth=rect.size.width-10;
浮动目标灯=矩形尺寸高度-10;
int i;
对于(i=10;i<100;i++){
NSDictionary*attrs=[[NSDictionary alloc]initWithObjectsAndKeys:[NSFont fontWithName:[self.font fontName]大小:i],NSFontAttributeName,nil];
NSSize strSize=[[self stringValue]sizeWithAttributes:attrs];
[ATTR释放];
如果(strSize.width>targetWidth | | strSize.height>targetHeight){
打破
}
}
[self-setFont:[NSFont-fontWithName:[self.font-fontName]大小:(i-1)];

我怎样才能解决这个问题?看起来糟透了。提前感谢。

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

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