Objective c 动画和UILabel更改文本

Objective c 动画和UILabel更改文本,objective-c,animation,uilabel,nstimer,Objective C,Animation,Uilabel,Nstimer,我的故事板视图中有一个UIImageView和一个UILabel。我在控制器中创建了2个相应的IBOutlet和一个NSTimer 每0.01秒,计时器调用以下移动图像的方法: -(void) update{ CGRect rect = myImageOutlet.frame; rect.origin.x += 1; myImageOutlet.frame = rect; } 它工作得很好。现在,我还想更改此方法中标签的文本,以显示当前经过的时间(为此,我在viewD

我的故事板视图中有一个UIImageView和一个UILabel。我在控制器中创建了2个相应的IBOutlet和一个NSTimer

每0.01秒,计时器调用以下移动图像的方法:

-(void) update{

    CGRect rect = myImageOutlet.frame;
    rect.origin.x += 1;
    myImageOutlet.frame = rect;
}
它工作得很好。现在,我还想更改此方法中标签的文本,以显示当前经过的时间(为此,我在viewDidLoad中初始化NSDate,并在其上使用方法TimeIntervalsIncesNow)

现在,标签的文本将正确更改,但图像仍保留在原始位置

我找到了一个解决方法,通过编程方式将添加到我的控制器的子视图中,并将标签放在这个子视图中

奇怪的是,我试图通过脚本中的对象库添加UIView和UILabel(而不是以编程方式),来实现同样的目的,但它不起作用

你知道为什么吗?
(如果您也知道,如果我更改了我感兴趣的标签文本,图像为什么不移动)

这是因为自动布局。当您设置使用自动布局的视图的框架时,当视图需要重新绘制时(如标签更新时),它将移回由其约束确定的位置。谢谢您的回答。因此,如果我在更新标签文本时理解得很好,整个视图将被重新绘制。您知道为什么以编程方式添加子视图时不会发生这种情况吗?(我想在这种情况下,只有子视图被重画。如果可能的话,我希望通过故事板也这样做)不,这与重画的内容无关。以编程方式添加视图时,除非您自己添加了布局约束,否则视图不会使用自动布局。在记分板中,如果启用了“自动布局”(默认情况下),则视图将添加布局约束。即使您自己不添加它们,系统也会为您添加它们。好的,谢谢,所以我将以编程方式添加它们(但现在我明白了原因)。