将约束添加到xib中的"主视图"

Tho*_*sen 6 xcode objective-c xib ios autolayout

UIView在.xib文件中定义了一个.我需要设置translatesAutoresizingMaskIntoConstraints = NO.这意味着框架没有转换为约束,所以我需要自己设置大小约束.

我为a创建了一个工作类别方法UIView:

-(NSArray*)setSizeConstraints:(CGSize)size
{
    NSLayoutConstraint* height = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1  constant:size.height];
    NSLayoutConstraint* width = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1  constant:size.width];

    [self addConstraint:height];
    [self addConstraint:width];

    return [NSArray arrayWithObjects:height, width, nil];
}
Run Code Online (Sandbox Code Playgroud)

但我想从Xcode界面构建器设置这些约束,但我的所有AutoLayout控件都是灰色的: Xcode界面构建器

有没有办法在界面构建器中执行此操作?

Par*_*ara 0

您现在肯定已经发现,目前似乎无法UIView从 Interface Builder 在主级别设置自动布局约束。

我在这里遇到了类似的问题(启动屏幕 XIB:缺少宽度/高度约束(Xcode 6)在使用我的应用程序的启动屏幕时,

如果您想继续与 IB 合作,我发现的唯一解决方法是:

  • 在 XIB 中使用 aUIViewController及其UIView,而不仅仅是 aUIView
  • 仅使用故事板(并且,再次,UIViewController

然而,我知道这些方法可能并不理想或“干净”,特别是如果您只是有一个子类UIView并且您想在一个好的旧 XIB 中绘制其界面。