gpt4 book ai didi

objective-c - 意外的 NSAutoresizingMaskLayoutConstraint 从 Nib 添加 UIView 到自动布局 Storyboard场景

转载 作者:太空狗 更新时间:2023-10-30 03:24:56 27 4
gpt4 key购买 nike

我在 IB 中有以下内容,两个 View 都打开了“使用自动布局”并关闭了“调整 subview 的大小”。

autolayout uiview

我只是想将自动布局 View 的一个实例添加到容器 View 中,使其边缘与容器 View 的边缘相交。容器 View 启用了自动布局,高度相同,但宽度是原来的两倍。这是代码:

- (IBAction)addSubviewButton:(id)sender
{
UIView *autolayoutView = [[[NSBundle mainBundle] loadNibNamed:@"AutolayoutView" owner:nil options:nil] objectAtIndex:0];
[self.containerView addSubview:autolayoutView];

[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0]];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0]];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0.0]];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeBottom
multiplier:1.0 constant:0.0]];
}

发生错误:

Probably at least one of the constraints in the following list is one you don't want...
(
"<NSIBPrototypingLayoutConstraint:0x8c364d0 'IB auto generated at build time for view with fixed frame' H:[UIView:0x8c356f0(275)]>",
"<NSLayoutConstraint:0x8d43d80 H:|-(0)-[AutolayoutView:0x8d47a30] (Names: '|':UIView:0x8c356f0 )>",
"<NSLayoutConstraint:0x8d09260 AutolayoutView:0x8d47a30.trailing == UIView:0x8c356f0.trailing>",
"<NSAutoresizingMaskLayoutConstraint:0x8d0eca0 h=--& v=--& AutolayoutView:0x8d47a30.midX == + 70>"
)

看起来 NSAutoresizingMaskLayoutConstraint 是在自动布局 View 添加为 subview 后自动创建的?在 didMoveToSuperview 中打印 Autolayout View 的约束时,它还不存在。如何解决?我想尝试在 IB 中对自动布局 View 创建约束作为构建时要忽略的占位符,但 IB 已为自动布局 View 禁用所有自动布局选项。

最佳答案

移除此约束的最简单方法是在 Swift 中将 View 的 translatesAutoresizingMaskIntoConstraints 设置为 false(或在 Objective- C)。您根本不需要任何代码就可以做到这一点。您可以在界面生成器中使用关键路径(附上屏幕)。

enter image description here

关于objective-c - 意外的 NSAutoresizingMaskLayoutConstraint 从 Nib 添加 UIView 到自动布局 Storyboard场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25101957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com