2

我在问一个非常基本的问题,我遇到了一些问题。我知道 iPad 支持的 iPhone 和 iPad 之间的区别SplitViewpopup over但是在设计时我遇到了错误。我设计了一个UITextView

UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(42, 150, 440, 60)];

这是设计文本视图的基本代码,但是当我在 iPad 模拟器上运行此代码时,对我来说似乎很好。但是当我在 iPhone 上运行它时,它并不顺利..因为那个 iPhone 的尺寸不同。在这种情况下,我应该怎么做才能在 iPhone 和 iPad 上运行它。

4

1 回答 1

2

我假设您正在选择通用可执行文件,因此条件编译不是您的选择。

当您制作通用可执行文件时,您应该在根据设备类型进行调用之前检查您所依赖的功能。在这种特殊情况下,您依赖于具有特定尺寸的屏幕。与其硬编码“幻数”(42、15、440 和 60),不如从可用屏幕的当前大小计算它们:

CGFloat w = [UIScreen mainScreen].bounds.size.width;
CGFloat h = [UIScreen mainScreen].bounds.size.height;
// Do something like this if you can
UITextView *textview = [[UITextView alloc]
    initWithFrame:CGRectMake(w*0.025, h*0.25, w*0.5, h*0.125)
];

有可能无法从屏幕尺寸计算实际尺寸,因为您不希望视图与屏幕成比例缩放。在这种情况下,您可以检查 和 的值hw检测设备尺寸,并使用相应的一组预定义尺寸来初始化您的视图。

于 2012-09-29T11:20:40.470 回答