我创建了MyCustomView,它有两个标签。一个在左边,一个在右边对齐,在右边。它的高度约为30px(并不重要)。我将它连接到xib,它的工作原理。在.xib中,我将主视图宽度设置为400px,并为标签设置自动布局约束。
现在问题。当我使用UIView添加到IB中的控制器并将类设置为MyCustomView时,我看到左侧标签但右侧标签不在屏幕上。我设置了约束,但它不起作用。当我尝试通过鼠标调整.xib中的MyCustomView并使用边缘移动时,它可以正常但是当我设置宽度值"手动"在右栏中,它没有正确布局(它根本没有变化)。问题出在哪儿?我该如何解决这个问题?
@implementation MyCustomView
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self commonInit];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self commonInit];
}
return self;
}
- (void)commonInit
{
self.backgroundColor = [UIColor clearColor];
self.view = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomView"
owner:self
options:nil] firstObject];
[self addSubview:self.view];
//self.translatesAutoresizingMaskIntoConstraints = NO;
}
- (void)awakeFromNib {
[super awakeFromNib];
//[self setNeedsUpdateConstraints];
//[self setNeedsLayout];
}
@end
正如你在评论中所看到的,我尝试了一些方法,但没有任何帮助。
答案 0 :(得分:1)
新文件 - > iOS(来源) - Cocoa Touch - >下一个
输入名称
在MyCustomView.m中添加代码
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization //self.view.backgroundColor = [UIColor redColor]; self.preferredContentSize = CGSizeMake(30.0, 400.0); } return self; }