Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.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未经我的授权而被调整大小_Ios_Xcode_Uiview_Autolayout_Nslayoutconstraint - Fatal编程技术网

Ios UIView未经我的授权而被调整大小

Ios UIView未经我的授权而被调整大小,ios,xcode,uiview,autolayout,nslayoutconstraint,Ios,Xcode,Uiview,Autolayout,Nslayoutconstraint,请看一个简单的视图控制器: - (void)viewDidLayoutSubviews { if (!self.viewHasAppeared) { self.viewHasAppeared = YES; self.testView.frame = CGRectMake(0, 0, 100, 100); } } 此代码应将视图的边框设置为0、0、100、100。然而,有几个问题。首先,这段代码被调用两次,即使我设置了一个标志,使它只发生一次

请看一个简单的视图控制器:

- (void)viewDidLayoutSubviews {

    if (!self.viewHasAppeared) {
        self.viewHasAppeared = YES;
        self.testView.frame = CGRectMake(0, 0, 100, 100);
    }
}

此代码应将视图的边框设置为0、0、100、100。然而,有几个问题。首先,这段代码被调用两次,即使我设置了一个标志,使它只发生一次

第一次,我看到了这一点:

<UIView: 0x7e3a5240; frame = (0 0; 100 100); autoresize = RM+BM; layer = <CALayer: 0x7e3a4bc0>>
<UIView: 0x7e3a5240; frame = (80 142; 160 284); autoresize = RM+BM; layer = <CALayer: 0x7e3a4bc0>>

但是它没有帮助。

在使用自动布局时,不应该设置帧。关闭“自动布局”,或通过更改约束间接更改框架。我不知道为什么移除约束不起作用;可能是因为testView的superview也有限制。谢谢您的输入。我总是在viewDidLayoutSubviews中操纵帧,即使在使用自动布局时也是如此。不知道为什么这次不起作用。我不明白为什么它会起作用,如果你说的是你在IB中提出的观点。如果它在过去对你起作用,我想看看一个成功的例子。你确定self.viewhassembeen=YES这行被调用了两次吗?或者断点只是在viewDidLayoutSubviews中?如果不希望视图具有约束,是否表示希望视图保持一定的大小?使用autolayout,以编程方式更新视图大小的最佳方法是为宽度和高度实际设置NSLayoutConstraint,并更改这些值。
[self.testView removeConstraints:self.testView.constraints];