ios – 更新UILabel文本重置故事板?
我遇到了一个奇怪的场景,我自己无法理解.
我开始了一个小测试场景,几乎是空的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上的其他视图,这完全让我感到困惑. 有人可以复制甚至解释它吗? 谢谢大家,提前:) 亚历克斯 解决方法
我能够重现所描述的行为,这就是它发生的原因:
>默认情况下,元素的位置由自动生成的AutoLayout约束确定 为了解决,我建议正确指定AutoLayout约束并直接更新它们而不是位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |