当字符长度改变时,保持UILabel在UIView中居中。 iOS,Objective C

时间:2014-03-13 12:38:59

标签: ios iphone objective-c uiview uilabel

我有一个UILabel,我在屏幕中间居中。数值最多可包含三位数。例如500。

我的问题是,当值发生变化时,会使UILabel位置偏离中心。

在下面的图像中,您将看到当值等于3位时,滑块标签看起来居中,当滑块标签值为12时,标签看起来偏离中心。

我需要UILabel将自身调整为始终位于UIView中。

我已尝试将以下代码添加到我的UILabel但没有运气。

enter image description here enter image description here

self.myCircleSliderValueLabel.font = sliderValueFont;
self.myCircleSliderValueLabel.textColor = [UIColor colorWithRed:103/255.0 green:187/255.0 blue:230/255.0 alpha:1.0];;
self.myCircleSliderValueLabel.numberOfLines = 0;
self.myCircleSliderValueLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.myCircleSliderValueLabel.text = @"400";
[self.myCircleSlider addSubview:self.myCircleSliderValueLabel];

self.myCircleSliderValueLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin |  UIViewAutoresizingFlexibleRightMargin; 

2 个答案:

答案 0 :(得分:9)

最简单快捷的方法是为myCircleSliderValueLabel设置固定宽度(以容纳所有三位数)并将textAlignment属性设置为NSTextAlignmentCenter

编辑:

或者您可以使用自动布局。像这样......

NSLayoutConstraint *con = [NSLayoutConstraint
  constrainWithItem:self.myCircleSliderValueLabel
  attribute:NSLayoutAttributeCenterX             // It says that X center
  relatedBy:NSLayoutRelationEqual                // Should equal
  toItem:self.myCircleSliderValueLabel.superview // To your label superview's...
  attribute:NSLayoutAttributeCenterX             // ... X center
  multiplier:1.0
  constant:0.0];

答案 1 :(得分:0)

您是否尝试过textAlignment = NSTextAlignmentCenter?