Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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/6/xamarin/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
Xamarin iOS-在调整内联字段的高度后,如何重新布局视图?_Ios_Xamarin - Fatal编程技术网

Xamarin iOS-在调整内联字段的高度后,如何重新布局视图?

Xamarin iOS-在调整内联字段的高度后,如何重新布局视图?,ios,xamarin,Ios,Xamarin,我在Xamarin中有一个iOS项目,其中包含一个带有复杂表单的屏幕 随着用户的进步,UITextfield可能会插入/显示到其他字段上方的视图中。在幕后,默认情况下,所有字段都是通过自动布局添加的,我只是通过调整其帧的高度和Y属性来显示字段 我遇到的问题是,该字段与它下面的字段出现在同一个空间中,我不知道如何重新绘制布局,以便在不调整每个字段的框架Y属性的情况下,将新显示字段下面的文本字段向下调整。下面是一个简化的模型,包括UI的初始状态、问题状态和所需状态 是否有更简单的方法在自动布局中重新

我在Xamarin中有一个iOS项目,其中包含一个带有复杂表单的屏幕

随着用户的进步,UITextfield可能会插入/显示到其他字段上方的视图中。在幕后,默认情况下,所有字段都是通过自动布局添加的,我只是通过调整其帧的高度和Y属性来显示字段

我遇到的问题是,该字段与它下面的字段出现在同一个空间中,我不知道如何重新绘制布局,以便在不调整每个字段的框架Y属性的情况下,将新显示字段下面的文本字段向下调整。下面是一个简化的模型,包括UI的初始状态、问题状态和所需状态

是否有更简单的方法在自动布局中重新绘制/回流屏幕布局,还是我必须调整所有较低字段的Y属性


我也会接受Obj-C或Swift中的答案。

当初始设置相关文本字段高度约束0时,如果需要,可以使用自动布局,更改所需的约束值,或者只删除高度约束。

听起来您好像在尝试混合自动布局和手动布局。这很少有好的结局,因为它们不应该在同一个视图中共存。我建议你试着在每次观看的基础上坚持一种或另一种。回答标题中的问题:查看SetNeedsLayout和LayoutIfNeed。SetNeedsLayout不起作用。最后,我不得不调整Y轴的位置,就像我调整场地的高度一样。我同意这不是最好的;但是,这比试图在屏幕上的每个ui组件上不断设置框架要好。和其他论坛告诉我的将一个表单拆分成多个屏幕相比,这仍然是一种更好的体验。感谢SetNeedsLayout所做的是安排一个布局过程。ViewWillLayoutSubviews在视图控制器(如果有)上被调用,然后自动布局发挥其神奇作用,然后LayoutSubviews在视图上被调用,最后ViewDidLayoutSubviews在视图控制器(如果有)上被调用。因此,这确实会重新布局视图,但这取决于您的布局代码和自动布局约束是否正确,以实现您想要的。说实话,我通常更喜欢手动布局,因为我喜欢一步一步地浏览代码并准确地看到发生了什么。但是对于非常简单的视图,我倾向于使用自动布局。