Масштабирование UIButton по вертикали только снизу - PullRequest
0 голосов
/ 10 декабря 2010

Я пытаюсь оживить масштабирование UIButton, но мне трудно заставить его оживить так, как я хочу.

У меня есть UIButton с растягиваемым UIImage.Я хочу, чтобы его высота масштабировалась до определенного размера и создавала эффект «роста».Я использую код ниже, но он оживляет UIButton, растущий сверху и снизу, а не просто снизу.Смотрите код здесь:

myButton.transform = CGAffineTransformMakeScale(1,0.5);
myButton.alpha = 0.6f;  
[UIView beginAnimations:@"myButton" context:nil];
[UIView setAnimationDuration:0.5];
myButton.transform = CGAffineTransformMakeScale(1,1);
myButton.alpha = 1.0f;
[UIView commitAnimations];

Трудно объяснить, в основном я хочу, чтобы кнопка UIB росла только с одной стороны (снизу), а не росла за счет расширения обеих сторон.Любые предложения?


ОБНОВЛЕНИЕ

Я также попытался изменить рамку кнопки, но это тоже не сработало.На этот раз никакой анимации не было видно вообще.Это мой код:

CGRect  buttonRect = CGRectMake(0, 0, 150, 22);
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = buttonRect;

myButton.alpha = 0.6f;
[self.view addSubview:myButton];

[UIView beginAnimations:@"myButton" context:nil];
[UIView setAnimationDuration:0.3];  
CGRect buttonRect2 = CGRectMake(0, 0, 150, 52);
myButton.frame = buttonRect2;
myButton.alpha = 1.0f;
[UIView commitAnimations];

Есть идеи, почему он вообще не оживляет?Я предполагаю, что это как-то связано с тем, как я устанавливаю кадр?

Ответы [ 3 ]

2 голосов
/ 13 декабря 2010

Вы не увидите анимации, пока не вызовете метод setFrame:.

CGRect  buttonRect = CGRectMake(0, 0, 150, 22);
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = buttonRect;

myButton.alpha = 0.6f;
[self.view addSubview:myButton];

[UIView beginAnimations:@"myButton" context:nil];
[UIView setAnimationDuration:0.3];  
CGRect buttonRect2 = CGRectMake(0, 0, 150, 52);
[UIView commitAnimations];

[UIView beginAnimations:@"myButton" context:nil];
[UIView setAnimationDuration:0.3];
 myButton.alpha = 1.0f;
[myButton setFrame: buttonRect2];
[UIView commitAnimations];
1 голос
/ 10 декабря 2010

Самый простой способ, вероятно, состоит в том, чтобы анимировать изменение свойства frame и увеличить там ширину и высоту, а не пытаться решить сложности преобразования, основанного вокруг центральной точки. Если вам действительно нужны преобразования в этом представлении, вы всегда можете прозрачно обновить его после завершения анимации.

0 голосов
/ 12 декабря 2010

Я ответил на свой вопрос. Вам нужно вызвать layoutSubviews. Смотрите здесь:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(0, 0, 150, 22);

myButton.alpha = 0.6f;
[self.view addSubview:myButton];
[myButton layoutSubviews];

[UIView beginAnimations:@"myButton" context:nil];
[UIView setAnimationDuration:0.3];  
myButton.alpha = 1.0f;
myButton.frame = CGRectMake(0, 0, 150, 52);
[myButton layoutSubviews];
[UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...