了解UIViews和对象的缩放大小

时间:2013-02-21 14:42:50

标签: ios uitableview uiview uiviewcontroller autoresizingmask

我正在尝试更好地了解如何根据旧款iphone和新款iphone尺寸来控制视图的大小。

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

Example

请原谅严重绘制的图表,但它应该有助于解释。

在此示例中,fieldView和buttonView始终需要保持固定大小,因为它们具有在变小时看起来不太好的对象。但是徽标视图还有徽标本身的另一个子视图,因此可能会缩小,具体取决于设备/屏幕尺寸。

这将如何实现?以编程方式设置示例子视图。我不明白的部分是在创建子视图的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);

我理解使用

  

autoresizingMask

但是根据可用的实际视图大小来计算高度会如何使用呢?

1 个答案:

答案 0 :(得分:1)

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

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

其余视图会保持其边距和高度/宽度都固定(即UIViewAutoresizingNone的{​​{1}}的默认值很好。)

  

根据可用的实际视图大小计算高度如何使用?

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

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