菜鸟教程小白 发表于 2022-12-12 18:49:02

调用 setText 时,iOS UILabel 位置被重置


                                            <p><p>我现在正在使用 Objective-C 在 iOS 中实现一个功能,即当 slider 值发生变化时,在 slider 的“节点”上方制作一个文本标签。文本标签文本是 slider 的当前值。 </p>

<p>所以,我在 StoryboardViewController 上添加了 UILabel。 </p>

<pre><code>@property (strong, nonatomic) IBOutlet UILabel *tempoSliderLabel;
</code></pre>

<p>在slider onchange函数中,计算sliderNodePosition后,</p>

<pre><code>];
;
</code></pre>

<p>但是,我不知道为什么标签有时会回到 Storyboard中的原始位置。在测试过程中看起来像“闪烁”:</p>

<p> <img src="/image/osMNT.gif" alt="Screenshot GIF"/> </p>

<p>然后,我再次尝试删除 setText,标签按预期“移动”。 </p>

<p>那么,如何防止 setText 重置标签位置?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>IBOutlet 的 lblValue 和它的 x 约束,如</strong></p>

<pre><code>IBOutlet UILabel * lblValue;
IBOutlet NSLayoutConstraint *sliderValueXconstraints;
</code></pre>

<p> <a href="/image/QBoIf.gif" rel="noreferrer noopener nofollow"><img src="/image/QBoIf.gif" alt="enter image description here"/></a> </p>

<p><strong> slider 的IBAction</strong></p>

<pre><code>-(IBAction)sliderAction:(UISlider*)slider
{
    float x = ;
    sliderValueXconstraints.constant=x;
    lblValue.text = ;
}

- (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;
}
</code></pre>

<p><strong>输出</strong></p>

<p> <a href="/image/K5pv8.gif" rel="noreferrer noopener nofollow"><img src="/image/K5pv8.gif" alt="enter image description here"/></a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于调用 setText 时,iOS UILabel 位置被重置,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35913544/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35913544/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: 调用 setText 时,iOS UILabel 位置被重置