0

我试图更好地了解如何根据旧 iphone 和新 iphone 的大小差异来控制视图的大小。

如果我有类似下面示例的设计,那么应该如何根据子视图以编程方式对其进行编码。

例子

请原谅画得不好的图表,但它应该有助于解释。

在此示例中,fieldView 和 buttonView 始终需要保持固定大小,因为它们的对象在变小时看起来不太好。然而,logoview 有另一个用于 logo 本身的子视图,因此可以根据设备/屏幕尺寸缩小。

这将如何实现?以编程方式设置示例子视图。我不明白的部分是,在创建子视图的 viewDidLoad 中,您不必像这样创建:

-(void)ViewDidLoad {
CGRect screen = [[UIScreen mainScreen] applicationFrame];
wholeView = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.size.width, self.view.bounds.size.height)];

 logoView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,150);
fieldView = [[UITableView alloc] initWithFrame:CGRectMake(0, logoView.bounds.size.height, 320, 100);

我了解使用

自动调整大小掩码

但是根据可用的实际视图大小,它如何在计算高度方面发挥作用?

4

1 回答 1

1

不确定我是否理解您的疑问,但添加以下内容应该可以解决问题:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

剩下的视图将保持它们的边距和高度/宽度固定(即,UIViewAutoresizingNone它们的默认值autoresizingMask很好。)

根据可用的实际视图大小,它如何在计算高度方面发挥作用?

基本上,您在 iPhone 显示屏上看到的是视图层次结构;此层次结构中的最顶层视图是UIWindow. 这与设备屏幕的大小相同(以这种方式初始化)。

现在,在上面的代码中,我们的logoView边距是固定的:这意味着它将与容器视图框架保持相同的距离;如果我们指定 size 是灵活的,那么 logoView 将简单地占据整个空间以保持边距固定。

于 2013-02-21T14:47:19.797 回答