将约束添加到xib中的“主视图”
我有一个.xib文件中定义的UIView
。 我需要设置translatesAutoresizingMaskIntoConstraints = NO
。 这意味着框架不会被转换为约束,所以我需要自己设置大小约束。
我为UIView
创build了一个工作类别的方法:
-(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控件都是灰色的:
有没有办法在界面生成器中做到这一点?
正如你现在已经发现的那样,看起来目前没有办法在Interface Builder的主UIView
级别设置Autolayout约束。
我有一个类似的问题( 启动屏幕XIB:缺less宽度/高度限制(Xcode 6) ),而我的应用程序的启动屏幕的工作。
我发现的唯一的解决方法,如果你想继续与IB合作,是:
- 在XIB中使用
UIViewController
及其UIView
,而不仅仅是一个UIView
- 只与故事板(并再次,
UIViewController
)
但是,我知道这些方法可能不是理想的或“干净的”,特别是如果你只是有一个UIView
的子类,并且想要在一个好的旧XIB中绘制它的接口。
这实际上是可能的。
简单地把你想要限制的视图放到另一个视图中,比如这里突出显示的视图。
然后,添加您想要的约束。
最后,将刚添加约束的视图拉出父视图。 您现在可以将约束添加到该视图。
- 移动视图与约束
- UICollectionViewCell systemLayoutSizeFittingSize返回不正确的宽度
- 如何设置子视图控制器的topLayoutGuide位置
- AutoLayout和UILabel调整animation在设备旋转时无法正常工作
- 我有一个UILabel自动布局定位在屏幕上,但是当我隐藏导航栏,它会导致标签“抽搐”第二个
- iOS6中的手势识别器和自动布局,从中心缩放
- 组表TableView,使用自调整节标题,重新加载后,如果向上滚动,tableview将跳转
- 问题与iOS 8自动布局(代码在iOS 7完美的作品)
- 在UITableViewCell的子视图上设置遮罩层将覆盖自动布局约束