调整大小时,iOS布局自定义视图使用xib创建

时间:2015-01-22 09:35:08

标签: ios objective-c autolayout custom-controls constraints

我创建了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

正如你在评论中所看到的,我尝试了一些方法,但没有任何帮助。

1 个答案:

答案 0 :(得分:1)

  1. 新文件 - > iOS(来源) - Cocoa Touch - >下一个 New File

  2. 输入名称 MyCustomView

  3. 在MyCustomView.m中添加代码

  4. - (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;
    }