我在.xib文件中定义了UIView
。我需要设置translatesAutoresizingMaskIntoConstraints = NO
。这意味着框架没有转换为约束,所以我需要自己设置尺寸约束。
我为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];
}
但我想从Xcode界面构建器设置这些约束,但我的所有AutoLayout控件都是灰色的:
有没有办法在界面构建器中执行此操作?
答案 0 :(得分:2)
答案 1 :(得分:0)
正如您现在已经发现的那样,看起来目前无法在Interface Builder的主UIView
级别设置Autolayout约束。
在使用我的应用的启动画面时,我遇到了类似的问题(Launch Screen XIB: Missing Width / Height Constraints (Xcode 6))。
如果您想继续与IB合作,我发现的唯一解决方法是:
UIViewController
及其UIView
,而不仅仅是UIView
UIViewController
)但是,我知道这些方法可能不理想或“干净”,特别是如果你只是有一个UIView
的子类,并且你想在一个好的旧XIB中绘制它的接口。