2013-06-27 14 views
7

Potrzebuję sposobu na zmianę czcionki UILabel za pomocą animacji ... Widziałem wiele sposobów animowania zmian rozmiaru czcionki, ale potrzebuję sposobu na zmianę jej typu (pogrubiony < -> cienki dla przykład)Animowana czcionka zmiany w UILabel

wielkie dzięki za pomoc!

Odpowiedz

9

Nie ma odwzorowania dyskretnego (w sensie matematycznym) między dwiema powierzchniami czcionek.

Jeśli możesz przejść od rozmiaru 10 do rozmiaru 11, korzystając z rampy (10.1, 10.2, 10.3, ...), nie ma czegoś takiego jak "coś 45% między helvetica neue i helvetica neue bold".

Najbliższe, co można zrobić, to przekształcać CGPaths w poszczególne litery, ale wymagałoby to ogromnej pracy z CoreTextem.

W międzyczasie radzę wykonać prosty crossfade.

Może w przyszłości (mrugnięcie, mrugnięcie) będą pewne ramy, które pomogą ci w tym zadaniu.

+0

To właśnie odpowiedź Bałam się ... :-) Dzięki tak .. – Chiko

+0

Pefect odpowiedź ... – sagarcool89

-1

Użyj uiview animateWithDuration. Wewnątrz bloku zmień typ czcionki (pogrubiony):

0

Można ustawić nowy rozmiar i wprowadzić zmiany w etykiecie po animacji w ten sposób.

[UIView animateWithDuration:0.9 animations:^{ 
     label.frame = (CGRect){ CGPointMake(51, 150), label.bounds.size }; 
    } completion:^(BOOL finished) { 
     label.font=[UIFont boldSystemFontOfSize:15]; 
     // etc. 
    }]; 

Ciesz się !!

+0

nie to pracował dla ciebie? – AtWork

+2

Niezupełnie .. chciałem animować przejście czcionki .. to po prostu zmienia ją na końcu animacji. – Chiko

-2
if(font_index == 8) 
    font_index = 0; 

[UIView animateWithDuration:2 
         delay:0 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 


        UIFont* newfont = Nil; 
        if(font_index % 2 != 0) 
        { 
         newfont = [UIFont fontWithName:self.fontNames[font_index] size:8]; 

        } 
        else 
        { 
         newfont = [UIFont fontWithName:self.fontNames[font_index] size:20]; 

        } 
        self.keyButton.titleLabel.font = newfont; 

       } 
       completion:^(BOOL finished){ 
        // if(finished) 
        // { 
         font_index++; 
         [self fontIt]; 
        //} 
       }]; 

}

Ten kod może odpowiedzieć na pytanie