Xamarin.iOS和Xamarin.Android中计算文本宽度的方法
Xamarin.iOS
CoreGraphics.CGSize cGSize = new CoreGraphics.CGSize(1000, 1000);
public double getDisplayLength(string str) {
var s = new NSAttributedString(str);
var size = s.GetBoundingRect(cGSize, NSStringDrawingOptions.UsesLineFragmentOrigin, null);
return size.Width;
}
Xamarin.Android
Paint paint = new Paint();
public double getDisplayLength(string str) {
float[] widths = new float[str.Length];
paint.GetTextWidths(str, widths);
float sum = 0;
widths.ForEachWithIndex((o, index) => {
sum += o;
});
return sum;
}
其中ForEachWithIndex是我自己写的一个扩展方法,方便遍历数组;
public static void ForEachWithIndex<T>(this T[] array, Action<T, int> action) {
for (int i = 0; i < array.Length; i++) {
action(array[i], i);
}
}
- 原文作者:岁寒
- 原文链接:http://www.suihanime.com/post/Xamarin/Xamarin.iOS%E5%92%8CXamarin.Android%E4%B8%AD%E8%AE%A1%E7%AE%97%E6%96%87%E6%9C%AC%E5%AE%BD%E5%BA%A6%E7%9A%84%E6%96%B9%E6%B3%95/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。