我已经在NIB文件中定义了一个自定义视图,并希望在StoryBoard中实例化一个副本,但是我在使用autolayout时遇到问题.
在一个简单的示例中,自定义视图具有固定大小的单个标签,并且垂直和水平居中,全部使用autolayout.
文件所有者设置为我的课程,它有顶部视图的插座.在自定义视图实现中我做:
- (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,将其设置为我的自定义类,并将其排列大小并集中在我的页面上,再次使用autolayout.
而且我的小部件的位置和大小正确,但内容没有调整大小如下图所示:
我从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]];
但这会导致无效的布局约束.
关于如何让这个工作的任何想法?
干杯!