在iOS中有类似Android的dimens.xml吗?

时间:2017-11-16 01:07:23

标签: android ios xamarin

我最近发现,我应该将所有尺寸/尺寸放在dimens.xml中,以便我支持多种屏幕分辨率的Android应用。

在iOS中我是否应该做类似的事情来支持多种屏幕分辨率?我在后端编写了所有视图(没有故事板),当我想要定位视图(填充,边距等)时,我只需将硬编码的数字添加到XY属性中视图的frameWidthHeightFont size等同样的事情。我想我编写的iOS应用程序在这样的不同屏幕分辨率上会显得很尴尬吗?

顺便说一下,我正在使用Xamarin(Xamarin.Android和Xamarin.iOS)。但我会理解使用本机代码的答案。

2 个答案:

答案 0 :(得分:3)

在iOS中没有类似dimens的内容。

我认为使用AutoLayout的正确约束可以在paddingmarginsWidthHeight等处理得很好。

但是,如果你仍想找到实现它的方法,这里有一个临时的解决方法。

创建一个名为Dimens的静态类。

public static class Dimens
{
    public static int Height
    {
        get {
            string device = DeviceHardware.Model;

            if (device.Contains("iPhone4"))
            {
                return 10;
            }
            else if (device.Contains("iPhone5"))
            {
                return 15;
            }
            else if (device.Equals("iPhone 6") || device.Equals("iPhone 6S"))
            {
                return 20;
            }
            else if (device.Equals("iPhone 6 Plus") || device.Equals("iPhone 6S Plus"))
            {
                return 25;
            }
            //other device 

            return 0;
        }
    }      
}

用法:

View.Height = Dimens.Height;

Here是可以检查您的设备类型的插件。

答案 1 :(得分:0)

你可以创建一个空的swift文件,并使用struct而不是dimens.xml for Android

struct Padding {
    static let left = 10
    static let right = 10
    static let top = 10
    static let bottom = 10
}