UILabel并不以我的UIView为中心

时间:2015-06-01 01:40:29

标签: ios objective-c iphone layout uiview

我正在初始化时向UIView添加UILabel,标签不会居中。我试过它的中心是layoutSubviews并以编程方式添加约束而没有运气。当它出现时,它位于中心左侧大约200像素。这是我的代码。提前致谢。

- (instancetype)initWithTitle:(NSString *)title andBody:(NSString *)body Andwidth:(CGFloat)width {
self = [super initWithFrame:CGRectMake(0, 0, width, 60)];
if (self) {

    UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 60)];
    containerView.backgroundColor = [UIColor orangeColor];
    [self addSubview:containerView];

    self.winningLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0, 300, 40)];
    self.winningLabel.textColor = [UIColor whiteColor];
    self.winningLabel.font = [UIFont fontWithName:@"Avenir" size:30];
    self.winningLabel.backgroundColor = [UIColor clearColor];
    self.winningLabel.lineBreakMode = NSLineBreakByTruncatingTail;
    self.winningLabel.numberOfLines = 2;
    self.winningLabel.text = @"YOU WIN";
    self.winningLabel.hidden = YES;
    [containerView addSubview:self.winningLabel];

    NSLayoutConstraint *xCenterConstraint = [NSLayoutConstraint constraintWithItem:self.winningLabel attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
    [self addConstraint:xCenterConstraint];

    NSLayoutConstraint *yCenterConstraint = [NSLayoutConstraint constraintWithItem:self.winningLabel attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];
    [self addConstraint:yCenterConstraint];

}

    return self;
}

- (void)layoutSubviews {
    [self.winningLabel setCenter:self.center];
}

1 个答案:

答案 0 :(得分:1)

我想你忘了文字对齐。默认情况下,标签中的文本与左侧对齐。如果您希望它位于中心,则应明确指定它。

self.winningLabel.textAlignment = NSTextAlignmentCenter;