Можно ли анимировать размер растягиваемого изображения кнопки в Cocoa Touch? - PullRequest
1 голос
/ 08 октября 2009

Я создаю UIB-кнопку с stretchableImageWithLeftCapWidth: topCapHeight:

Я бы хотел плавно изменить его размер с помощью Core Animation, например:

float shrinkFactor = 0.2;
NSTimeInterval slowSpeed = 5.0;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:slowSpeed];

UIButton *thisButton = (UIButton *)[self.view viewWithTag:2];
thisButton.frame = CGRectMake(thisButton.frame.origin.x, thisButton.frame.origin.y, buttonStretchedWidth * shrinkFactor, thisButton.frame.size.height);

[UIView commitAnimations];

Размер изображения кнопки не анимируется, он просто привязывается к новому размеру.

Когда я делаю backgroundColor кнопки видимым, я вижу, что сама рамка корректно анимируется.

Я что-то упустил или растяжение изображения не анимируемое?

1 Ответ

2 голосов
/ 08 октября 2009

Мне никогда не удавалось непрерывно обновлять растяжение изображения. Попробуйте разделить изображение на верхние и центральные области и создать восемь или девять UIImageView подпредставлений с соответствующим набором autoresizingMask. Например. вид в верхнем правом углу должен иметь UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin, вид внизу в центре (растягивающийся) должен иметь UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin и т. д. Представления довольно дешевы на iPhone OS, как только они созданы, поэтому я не думаю, что вы увидите снижение производительности, если не анимируете сразу полдюжины кнопок. Обязательно сделайте все, что вы можете непрозрачным, хотя - создание непрозрачных представлений довольно дорого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...