我在 NIB 文件中定义了一个自定义视图,并希望在 StoryBoard 中实例化一个副本,但我遇到了自动布局问题。
在一个简单的示例中,自定义视图具有固定大小的单个标签,并且垂直和水平居中,所有这些都使用自动布局。
文件所有者设置为我的班级,它有一个通往顶视图的出口。在自定义视图实现中,我这样做:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
[[NSBundle mainBundle] loadNibNamed:@"FMCompassView" owner:self options:nil];
[self addSubview:self.topView];
}
return self;
}
现在,在我的情节提要中,我添加了一个 UIView,将它的类设置为我的自定义类,并将其布局到我的页面上并以我的页面为中心,再次使用自动布局。
我的小部件的位置和大小都正确,但它的内容没有调整大小,如下图所示:
从NIB加载后,我尝试添加更多约束,类似于:
UIView* subV = self.topView;
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(subV);
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[subV]|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewsDictionary]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[subV]|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewsDictionary]];
但这会导致无效的布局约束。
关于如何让它发挥作用的任何想法?
干杯!