Xamarin.iOS NSString.StringSize尺寸错误(sizeWithFont)

Xamarin.iOS NSString.StringSize尺寸错误(sizeWithFont),ios,xamarin.ios,xamarin,sizewithfont,Ios,Xamarin.ios,Xamarin,Sizewithfont,我正在计算字符串在屏幕上的空间大小。 我正在使用NSString.StringSize,它现在指向Xamarin.iOS中的sizeWithFont:constrainedToSize:lineBreakMode: UIFont MeasureFont = UIFont.SystemFontOfSize(16f); private static SizeF MaxMeasureSize = new SizeF(208, float.MaxValue); //... string messageB

我正在计算字符串在屏幕上的空间大小。 我正在使用NSString.StringSize,它现在指向Xamarin.iOS中的sizeWithFont:constrainedToSize:lineBreakMode:

UIFont MeasureFont = UIFont.SystemFontOfSize(16f);
private static SizeF MaxMeasureSize = new SizeF(208, float.MaxValue);
//...
string messageBody = "Test";//comes from my dataSource
NSString nsString = new NSString(messageBody);
var textSize = nsString.StringSize(MeasureFont, MaxMeasureSize, UILineBreakMode.CharacterWrap);
Console.WriteLine("Measured -- {0} for [{1}]", textSize, messageBody);
我的应用程序中的输出:

2014-09-05 00:05:20.338附录1[3150:90b]测量值{宽度=29.68, [Add]的高度=19.088}

2014-09-05 00:05:20.339附录1[3150:90b]测量值{宽度=29.488, [测试]的高度=19.088}

在PhotoShop中使用此字体和这些字符串的屏幕截图。 显然,字符串“Test”比“Add”长


你们在模拟器中测试它吗?我刚刚在iPad3上尝试了你的例子,得到了以下结果:{Width=29488,Height=19088}对于[Test]{Width=29,68,Height=19088}对于[Add]。测试标签确实比添加标签小一点,而且StringSize也不推荐使用。您应该使用GetSizeUsingAttribute。我在模拟器里测试,你说得对。将检查GetSizeSingattributes问题是,在模拟器和设备中渲染可能不同。另外,字体可能有点不同。另外,据我所知,您只是直接在Photoshop中键入这些单词来检查实际宽度。这也是不正确的。photoshop中的渲染效果完全不同。对我来说,在iPad3上,iOS7.1测试看起来要小一些。因此,计算值是正确的