2015-06-01 4 views
-1

Я добавляю UILabel к UIView при инициализации, и метка не будет центрировать себя. Я пробовал сосредоточиться, это layoutSubviews и добавление ограничений программно, без везения. Когда он появляется, он находится примерно на 200 пикселей слева от центра. Вот мой код. Заранее спасибо.UILabel не сосредоточен в моем UIView

- (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

Я думаю, что вы забываете выравнивание текста. По умолчанию текст в метке выравнивается влево. Если вы хотите, чтобы он находился в центре, вы должны указать его явно.

self.winningLabel.textAlignment = NSTextAlignmentCenter; 
+0

Вы настолько правы. Спасибо. – user1681673

Смежные вопросы