我已经以编程方式添加了一个文本框。我的代码如下:

t = [[UITextField alloc] init];
    [t setFrame:CGRectMake(55,200,200,50)];

    [self.view addSubview:t];


当我在iPhone模拟器上运行它时,它可以完美地工作(文本字段位于我想要的确切点上),但是当我在iPad上运行它时,位置不合适。我以为它会在屏幕尺寸增加/减小时自动进行自我调整。我要如何纠正呢?

注意:我不会使用界面构建器或故事板。

最佳答案

设置绝对值可以按预期工作。这就是为什么称为绝对值的原因。问题是柔性/动态值。

除非您告知您这样做,否则它不会自动调整。这是您的选择:


手动检查用户界面惯用法并设置两个不同的值。这是检测iPhone和iPad UI的正确方法:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) ...


(为此创建一些功能。)
根据屏幕或超级视图大小计算值:

CGSize screen = [[UIScreen mainScreen] bounds].size;
frame.size.width = screen.width / 2 - 40;

设置自动调整大小掩码,当超级视图更改大小时,它会调整现在子视图上的规则大小:

view.autoresizingMask = UIViewAutoresizingMaskFlexibleWidth;


必须与一些固定或计算的帧值结合使用。自动调整大小仅在调整视图大小时有用,而在第一次设置视图时不可用,因此情况并非完全如此。有关其工作原理的完整说明,请参见UIView文档。
使用功能强大的自动版式,但解决动态版式非常复杂。首先,您需要阅读它并进行实验以完全了解如何使用它。


如果您的视图的大小和位置无法使用某种规则描述,则必须直接编写坐标(选项1)。

关于ios - 为ui组件提供绝对值-在iPad上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20438099/

10-12 12:54