UIView начинающих анимаций: подпредставление не должно оживлять

Привет, у меня есть UIView, к которому я добавляю UIButton в его initWithFrame: метод как это:

UIButton * dropB = [UIButton buttonWithType:UIButtonTypeRoundedRect];
dropB.frame = CGRectMake(190, 22, 52, 22);
dropB.backgroundColor = [UIColor clearColor];
dropB.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:11];
[dropB setTitle:@"DROP" forState:UIControlStateNormal];
[dropB addTarget:viewController 
          action:@selector(dropSelectedObject)
forControlEvents:UIControlEventTouchUpInside];

[self addSubview:dropB];

Затем, когда я пытаюсь анимировать вид с изменением размера, вот так:

[UIView beginAnimations:@"MoveIt" context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:YES];
self.dropButton.center = CGPointMake(self.dropButton.center.x + 80, self.dropButton.center.y -10);
self.frame = CGRectMake(0, 0, WIDTH, HEIGHT); 
self.center = CGPointMake(CENTER_X, CENTER_Y);
[UIView commitAnimations];

Кнопка переводится только в новую позицию, которая является предыдущей (исходные координаты были относительно предполагаемого вида). Как я могу заставить его перевести на точку, которую я указал?

1 ответ

Решение

Хорошо, это было довольно просто (и глупо).

Так как мне нужно, чтобы UIButton оставался на фиксированной высоте, я должен был указать, какое пространство было "гибким" при изменении размера. Это можно сделать с помощью autoresizingMask Свойство UIView таким образом:

dropB.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleBottomMargin;

и не вызывая anithing среди инструкций анимации

Другие вопросы по тегам