Xamarin iOS中的TypedValue

时间:2017-03-07 08:04:48

标签: android ios xamarin xamarin.ios

在android或xamarin droid中有一种方法TypedValue.applyDimension
Converts an unpacked complex data value holding a dimension to its final floating point value

在xamarin ios中是否有类似的功能?或做出类似事情的最佳方法

1 个答案:

答案 0 :(得分:0)

据我所知,iOS上开箱即用的功能并不存在。但是,如果你看一下该方法的实际Java实现,你会发现它非常简单:

public static float applyDimension(int unit, float value,
                                   DisplayMetrics metrics)
{
    switch (unit) {
    case COMPLEX_UNIT_PX:
        return value;
    case COMPLEX_UNIT_DIP:
        return value * metrics.density;
    case COMPLEX_UNIT_SP:
        return value * metrics.scaledDensity;
    case COMPLEX_UNIT_PT:
        return value * metrics.xdpi * (1.0f/72);
    case COMPLEX_UNIT_IN:
        return value * metrics.xdpi;
    case COMPLEX_UNIT_MM:
        return value * metrics.xdpi * (1.0f/25.4f);
    }
    return 0;
}

DisplayMetrics类获得的值应该主要在iOS上的UIScreen.MainScreen中提供。此外,您可能希望将单元定义为枚举。这应该是实现自己计算的一个很好的起点。