Я натолкнулся на странный сценарий, который я просто не могу понять самостоятельно.Обновление UILabel Text сбрасывает раскадровку?
Я начал небольшой тестовый сценарий с почти пустым приложением iOS Single View и раскадровкой. На доске объявлений есть ярлык и один UIView, 10x10, только для того, чтобы представить проблему. Конечно, они имеют соответствующие IBOutlets назначены и подключены:
@property (nonatomic, weak) IBOutlet UILabel *label;
@property (nonatomic, weak) IBOutlet UIView *dot;
В (ничтожной) метод 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 {
// 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, а каждый десятый раз, когда я обновить этикетку, чтобы показать текущее положение X. В этом отношении даже не имеет значения, что я обновляю текст ярлыка, просто важно, чтобы он изменился. И я меняю текст каждые 10 раз, чтобы лучше показать проблему здесь.
Если я запустил этот код, точка перемещается точно так же, как указано справа, но затем, когда я обновляю текст ярлыка, точка-точка сбрасывается и возвращается к исходной позиции. Так что обновление текста ярлыка сбрасывает мои другие взгляды на раскадровки, что меня совершенно смущает.
Может ли кто-нибудь воспроизвести это или даже объяснить?
Спасибо всем, заранее :)
Alex
У вас есть ограничения AutoLayout, установленные в раскадровке? BTW love this '(int) 10.0' –
Я не задавал никаких особых ограничений AutoLayout, поэтому у представления есть настройки по умолчанию. – green4367
Возможно, у вас есть ограничения Auto Layout, вы не установили его фрейм, правильно? – Bannings