UIView начинающих анимаций: подпредставление не должно оживлять - PullRequest
0 голосов
/ 18 августа 2010

Привет, у меня есть 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 Ответ

0 голосов
/ 19 августа 2010

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

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

dropB.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleBottomMargin;

и не вызывать анитинг среди анимационных инструкций

...