Как динамически увеличить UILabel (размер метки и шрифта)? - PullRequest
7 голосов
/ 23 марта 2010

Я сейчас работаю над проектом iPhone. Я хочу динамически увеличить UILabel в Objective-C следующим образом:

альтернативный текст http://img268.imageshack.us/img268/9683/bildschirmfoto20100323u.png

Как это возможно? Я думал, что должен сделать это с CoreAnimation, но я не работал. Вот код, который я пробовал:

UILabel * fooL = //[…]
fooL.frame = CGRectMake(fooL.frame.origin.x, fooL.frame.origin.y, fooL.frame.size.width, fooL.frame.size.height);   
fooL.font = [UIFont fontWithName:@"Helvetica" size:80];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:YES];
fooL.font = [UIFont fontWithName:@"Helvetica" size:144]; //bigger size
fooL.frame = CGRectMake(20 , 44, 728, 167); //bigger frame
[UIView commitAnimations];

Проблема с этим кодом в том, что он не изменяет размер шрифта динамически.

Ответы [ 4 ]

3 голосов
/ 17 декабря 2011

Все, что вам нужно сделать, это применить аффинное преобразование к объекту UILabel.

CGFloat scaleFactor = 2.0f;
label.transform = CGAffineTransformMakeScale(scaleFactor, scaleFactor); // Enlarge by a factor of 2.
1 голос
/ 17 декабря 2011

Масштабирование вашего ярлыка в соответствии с предложением других пользователей с использованием свойства transform будет работать отлично.Следует иметь в виду, что по мере увеличения метки размер шрифта увеличивается, а не отображается текст, что означает, что он будет выглядеть «размытым» по мере увеличения.

0 голосов
/ 15 декабря 2011

Просто измените масштаб Label вместо изменения размера шрифта.

0 голосов
/ 24 марта 2010

Попробуйте этот метод:

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition 
                       forView:(UIView *)view 
                         cache:(BOOL)cache

Параметры: переход Переход применяется для просмотра. Возможные значения описаны в UIViewAnimationTransition.

вид Вид для применения перехода к.

кэш Если ДА, изображения до и после визуализируются один раз и используются для создания кадров в анимации. Кэширование может повысить производительность, но если вы установите для этого параметра значение YES, вы не должны обновлять представление или его подпредставления во время перехода. Обновление представления и его подпредставлений может повлиять на поведение кэширования и привести к неправильному отображению содержимого представления (или в неправильном месте) во время анимации. Вы должны дождаться окончания перехода, чтобы обновить представление.

Если НЕТ, представление и его содержимое должны обновляться для каждого кадра анимации перехода, что может заметно повлиять на частоту кадров.

Обсуждение Если вы хотите изменить внешний вид представления во время перехода - например, переключаться с одного представления на другое - используйте контейнерное представление, экземпляр UIView, следующим образом:

Начните анимационный блок. Установите переход в представлении контейнера. Удалите подпредставление из представления контейнера. Добавьте новое подпредставление в представление контейнера. Зафиксируйте анимационный блок.

...