Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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/9/ios/119.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/0/laravel/11.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
Iphone 自动布局在以编程方式调整控件大小后不起作用-iOS_Iphone_Ios_Cocoa Touch_Uiview_Autolayout - Fatal编程技术网

Iphone 自动布局在以编程方式调整控件大小后不起作用-iOS

Iphone 自动布局在以编程方式调整控件大小后不起作用-iOS,iphone,ios,cocoa-touch,uiview,autolayout,Iphone,Ios,Cocoa Touch,Uiview,Autolayout,我一直在使用自动布局功能。一切正常,但如果我以编程方式调整任何控件的大小,其他子视图或控件将不会相应地排列。 如何在以编程方式调整任何控件的大小后更新约束 或 在代码中调整控件的大小后,AutoLayout会工作吗 编辑: 在这里,我根据字符串调整文本视图的大小,但它与下面的子视图重叠 - (void)textViewDidChange:(UITextView *)textView { if (textView == pupose_txt_view) { CGS

我一直在使用自动布局功能。一切正常,但如果我以编程方式调整任何控件的大小,其他子视图或控件将不会相应地排列。 如何在以编程方式调整任何控件的大小后更新约束

在代码中调整控件的大小后,AutoLayout会工作吗

编辑:

在这里,我根据字符串调整文本视图的大小,但它与下面的子视图重叠

 - (void)textViewDidChange:(UITextView *)textView
    {
    if (textView == pupose_txt_view) {
        CGSize maximumLabelSize = CGSizeMake(self.topic_text_view.frame.size.width,
                                             FLT_MAX);

        UILabel *label = [[UILabel alloc] initWithFrame:pupose_txt_view.frame];
        CGSize expectedLabelSize = [pupose_txt_view.text sizeWithFont:pupose_txt_view.font
                                      constrainedToSize:maximumLabelSize
                                          lineBreakMode:label.lineBreakMode];


        CGRect newFrame = pupose_txt_view.frame;
        newFrame.size.height = expectedLabelSize.height;
        pupose_txt_view.frame = newFrame;
    }
}

如果使用自动布局,则不能使用
setFrame:
更新视图的位置或大小。相反,您必须更新约束以设置新尺寸,以便布局系统可以更新所有视图的位置


为此,您可以为文本大小的高度约束创建一个出口,并在需要更改高度时将其设置为
常量
属性。您也可以删除文本视图的约束并创建新的约束,但更新常量是首选方法,因为它需要更少的代码,并且在运行时更高效。

如果使用自动布局,则不能使用
setFrame:
更新视图的位置或大小。相反,您必须更新约束以设置新尺寸,以便布局系统可以更新所有视图的位置


为此,您可以为文本大小的高度约束创建一个出口,并在需要更改高度时将其设置为
常量
属性。您也可以删除文本视图的约束并创建新的约束,但更新常量是首选方法,因为它需要更少的代码,而且在运行时效率更高。

如何调整控件大小,显示一些代码。@Sven请选中“编辑”。如何调整控件大小,显示一些代码。@Sven请选中“编辑”。