Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何正确解析UIView autoresizingMask集但不解析?_Ios_Uikit_Autoresizingmask - Fatal编程技术网

Ios 如何正确解析UIView autoresizingMask集但不解析?

Ios 如何正确解析UIView autoresizingMask集但不解析?,ios,uikit,autoresizingmask,Ios,Uikit,Autoresizingmask,希望下面给出所需的一切 在我的应用程序中,只有一行调整父视图的框架,而受影响的子视图没有按照我对autoresizingMask的期望以适当的方式响应 viewController.view子视图有1个子视图,所有页边距都将调整大小,框架为0,0320270 viewController.view具有帧=0,0320276 将viewController.view调整为0,641024704后 一个子视图固定在底部,基本上与子视图中没有灵活的底部边距时的效果相同 352434320270。大小合

希望下面给出所需的一切

在我的应用程序中,只有一行调整父视图的框架,而受影响的子视图没有按照我对autoresizingMask的期望以适当的方式响应

viewController.view子视图有1个子视图,所有页边距都将调整大小,框架为0,0320270

viewController.view具有帧=0,0320276

将viewController.view调整为0,641024704后

一个子视图固定在底部,基本上与子视图中没有灵活的底部边距时的效果相同

352434320270。大小合适,没有调整大小。但从superview顶部向下434点,加上高度270,=704,superview的高度

我希望270子视图高度和704之间的434差异在顶部和底部边距之间得到平衡

但上下页边距都指定为调整大小。我很困惑。可能是我的代码盲了,这很容易

当一个保证金为零,但另一个保证金不是零时,这可能与一些特殊处理有关。以前从未尝试过这种情况

po[viewController.view子视图]

(id)$1=0x09696340(

>

)

(lldb)po viewController.view

(UIView*)$2=0x09695ab0>

然后用一行代码更改superview:

viewController.view.frame = {...};
(lldb)po viewController.view

(UIView*)$3=0x09695ab0>

(lldb)po[viewController.view子视图]

(id)$4=0x09696340(

>

)

编辑-


问题可能是另一个我不知道的事实上的财产。可能类似于autolayout或约束,但autolayout已关闭。此外,superview不是一个自定义UIView子类,它在LayoutSubView中具有一些奇特的特性。这都是普通的UIKit内容。

您正在尝试从nib添加视图。所以,按照我的观点,nib是在应用程序启动时首先执行的。此时,视图不包含设备或superview的实际大小。所以,当应用程序启动时,它将采用您定义的实际大小,并添加初始大小的子视图


因此,我的建议是在ViewWillAspect()或ViewDidAspect()中添加视图,因为此时设备的实际大小已获得,您将获得视图的正确大小和位置。

您是如何添加视图的?是如何从nib文件创建视图及其子视图的?还是通过编程创建的?如果使用代码,则需要设置子视图的属性,它们是从nib创建的。但这不重要,对吗?我已经从代码和nib中创建了视图,并在代码和nib中来回手动定义了autoresizingMask。文件上说默认值是UIViewAutoResizingOnei,我想知道是否还有我丢失的其他属性。可能与autolayout或约束有关的内容已经生效,但autolayout已关闭。此外,superview不是一个自定义UIView子类,它在LayoutSubView中具有一些奇特的功能。这都是常规的。我已经确认:如果UIView具有顶部+底部的弹性边距、静态高度和frame.origin.y==0,那么当调整superview的大小时,视图将重新定位到底部。基本上是frame.origin.y==superview.bounds.size.height-view.bounds.size.height。非常混乱,而且违反直觉。