Ios 了解UIView和对象的缩放大小

Ios 了解UIView和对象的缩放大小,ios,uitableview,uiview,uiviewcontroller,autoresizingmask,Ios,Uitableview,Uiview,Uiviewcontroller,Autoresizingmask,我试图更好地理解如何控制旧版iPhone和新版iPhone在大小上的差异 如果我有一个像下面这个例子一样的设计,那么应该如何在子视图中以编程的方式进行编码 请原谅这个画得不好的图表,但它应该有助于解释 在本例中,fieldView和buttonView始终需要保持固定的大小,因为它们的对象在缩小时看起来不太好。但是logoview有另一个子视图用于logo本身,因此可以根据设备/屏幕大小进行缩小 这将如何实现?以编程方式设置示例子视图。我不明白的是,在创建子视图的viewDidLoad中,您不

我试图更好地理解如何控制旧版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);
我了解如何使用

自动重定位


但是,根据可用的实际视图大小计算高度时,它将如何使用呢?

我不确定是否理解您的疑问,但添加以下内容应该可以做到这一点:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
剩下的视图将保持它们的边距和高度/宽度固定(即,它们的
autoresizingMask
UIViewAutoresizingNone
的默认值是可以的。)

根据可用的实际视图大小计算高度时,它将如何使用

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


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

Ok,因此基本上我将logoView设置为0,0,固定高度,固定宽度)。。。然后用0(视图上方的高度)、固定高度、固定宽度设置其他视图。。。同样适用于buttonView。然后仅将loginView和self.view设置为具有宽度和高度的自动重设网格。反过来,当需要适应屏幕时,这将仅拉伸logoView?对:您设置所有视图的框架,以便它们以固定大小正确显示在屏幕上,然后为logoView指定flexibleWidth/Height,以便它将扩展以占用所有可用空间。您还需要为容器视图指定灵活的高度,因为如果容器视图没有拉伸,则logoView将没有可用的空间可供占用。因此,尽管您实际上为logoView设置了固定的高度和宽度,但实际上使用autoresizingMask?if“为logoView设置固定的高度和宽度”会忽略它您指的是您在
initWithFrame
中指定的内容,您可以将其视为“参考”宽度/高度,这会影响自动调整大小的工作方式。有助于理解这一点的是Mac电脑:屏幕上有一个可以放大或缩小的窗口;如果调整窗口的大小,则窗口的子视图将根据其当前状态动态地重新排列。在iPhone上,由于主窗口的大小是固定的,因此自动调整大小只能在不同的设备和设备旋转时使用。