调用setText时,重置iOS UILabel位置

时间:2016-03-10 10:16:36

标签: ios objective-c

我现在正在使用objective-C在iOS中实现一个函数,即在"节点"之上创建一个文本标签。当滑块值发生变化时,滑块的数量。文本标签文本是滑块的当前值。

所以,我在故事板视图控制器上添加了UILabel。

@property (strong, nonatomic) IBOutlet UILabel *tempoSliderLabel;

在slider onchange函数中,在计算sliderNodePosition后,

[self.tempoSliderLabel setText:[NSString stringWithFormat:@"%ld", sliderTempoValue]];
[self.tempoSliderLabel setCenter: CGPointMake(slideNodePosition.x, slideNodePosition.y - 10.0)];

但是,我不知道为什么标签有时会回到故事板中的原始位置。它看起来像"闪烁"在测试期间:

Screenshot GIF

然后,我再次尝试删除setText,标签是"移动"正如所料。

那么,我怎样才能阻止setText重置标签位置?

1 个答案:

答案 0 :(得分:2)

lblValue的IBOutlet和它的x约束

IBOutlet UILabel * lblValue;
IBOutlet NSLayoutConstraint *sliderValueXconstraints;

enter image description here

滑块的IBAction

-(IBAction)sliderAction:(UISlider*)slider
{
    float x = [self xPositionFromSliderValue:slider];
    sliderValueXconstraints.constant=x;
    lblValue.text = [NSString stringWithFormat:@"%f", slider.value];
}

- (float)xPositionFromSliderValue:(UISlider *)aSlider
{
    float sliderRange = aSlider.frame.size.width - aSlider.currentThumbImage.size.width;
    float sliderOrigin = aSlider.frame.origin.x + (aSlider.currentThumbImage.size.width / 2.0);

    float sliderValueToPixels = (((aSlider.value - aSlider.minimumValue)/(aSlider.maximumValue - aSlider.minimumValue)) * sliderRange) + sliderOrigin;

    return sliderValueToPixels;
 }

<强>输出

enter image description here