繁体   English   中英

在通用应用程序中处理UI大小不变的最佳实践?

[英]best practice to handle UI size constant in universal app?

我即将将我的iPhone应用程序转换为iPad应用程序。 iPad应用程序用户界面大多类似于双倍大小的iPhone应用程序。 我的iPhone UI的许多部分都是通过代码完成的,因此在iPad版本中,我有很多常量需要乘以双倍:

CGFloat scale = (IS_IPAD) ? 2 : 1;
kCellHeight = 140 * scale;

为所有这些常量编写代码就像一种痛苦。

有什么好的方法可以解决这个问题?

谢谢,


[编辑]:为此使用宏的提示

如果要创建一个可以在iPhone或iPad上运行的应用程序 ,并且需要在运行时确定值,请使用sthg,如下所示:

#define ZoomOnIPad(x) (UI_USER_ITERFACE_IDIOM() == UIUserInterfaceIdiomPhone) ? (x) : (2*x)

如果要创建两个不同的应用程序 ,一个用于iPad,一个版本用于iPhone(例如,在Xcode项目中定义两个不同的目标),因此可以在编译时确定值,请定义一个具有不同值的预处理器宏对于两个目标,以便您可以区分它们(例如,在iPad目标中定义IPAD_TARGET而不在iPhone目标中定义它),然后使用sthg:

#ifdef IPAD_TARGET
  #define ZoomOnIPad(x) 2*x
#else
  #define ZoomOnIPad(x) x
#endif

然后当然可以用这种方式:

kCellHeight = ZoomOnIPad(140);

不幸的是,iPad屏幕和iPhone屏幕的比例不同(iPad的宽/高比为0.75,iPhone的为0.66)。 两者之间的差别确实很小,但是如果您将iPhone应用程序实际尺寸加倍,则将无法填充整个iPad屏幕。

因此,如果您未在界面上使用UIKit,则需要通过使用自动调整大小的遮罩或手动(例如,按钮x值为0.34 * screenSize.width)来使布局灵活地适应那些更改。 这比保留2套坐标要容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM