iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 更新UILabel文本重置故事板?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我遇到了一个奇怪的场景,我自己无法理解. 我开始了一个小测试场景,几乎是空的iOS单视图应用程序和故事板.故事板包含一个标签和单个UIView,10×10,仅用于呈现问题.当然,他们已经分配和连接了适当的IBOutlets: @property (nonatomic, weak) IBOutlet UILabel *label; @property (nonatomic, weak) IBOutl
我遇到了一个奇怪的场景,我自己无法理解.

我开始了一个小测试场景,几乎是空的iOS单视图应用程序和故事板.故事板包含一个标签和单个UIView,10×10,仅用于呈现问题.当然,他们已经分配和连接了适当的IBOutlets:

@property (nonatomic,weak) IBOutlet UILabel *label;
@property (nonatomic,weak) IBOutlet UIView *dot;

在(void)viewDidLoad方法中,我启动一个计时器并将其添加到运行循环中,如下所示:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSTimer * timer = [NSTimer timerWithTimeInterval:0.5 target:self SELEctor:@SELEctor(doSomething) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}

在(void)doSomething方法中,我执行以下操作:

-(void)doSomething {
    // Lets move the dot to the right a bit further
    _dot.center = CGPointMake(_dot.center.x+1,_dot.center.y);

    // About every ten steps,update the label with the current
    // X position,to better show the problem
    CGFloat moduloResult = (float)((int)_dot.center.x % (int)10.0);
    if(moduloResult <= 0)
        _label.text = [NSString StringWithFormat:@"%f",_dot.center.x+1];
}

所以基本上,我每次更改小10×10点视图的中心为1,每10次更新标签显示当前的X位置.就此而言,我更新标签文本并不重要,重要的是它会发生变化.我每10次只更改一次文本,以便更好地显示问题.

如果我运行该代码,则点会按预期向右移动,但是当我更新标签文本时,点视图会重置并跳回其原始位置.所以更新我的标签文本会重置我在Storyboard上的其他视图,这完全让我感到困惑.

有人可以复制甚至解释它吗?

谢谢大家,提前:)

亚历克斯

解决方法

我能够重现所描述的行为,这就是它发生的原因:

>@L_674_16@认情况下,元素的位置由自动生成的AutoLayout约束确定
>当更改点的位置时,您只更新它的当前帧,而不是更新基础约束
>更改UILabel的文本可能会更改UILabel内容的大小,因此需要重新计算其框架.这里基于约束重新计算整个布局,因此也重新设置点的帧.

为了解决,我建议正确指定AutoLayout约束并直接更新它们而不是位置.

大佬总结

以上是大佬教程为你收集整理的ios – 更新UILabel文本重置故事板?全部内容,希望文章能够帮你解决ios – 更新UILabel文本重置故事板?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。