2013-06-27 94 views
7

我需要一種方法來更改UILabel的字體和動畫... 我看到了很多方法來動畫更改字體大小,但我需要一種方法來更改它的類型(粗體< - > thin for例如)UILabel動畫更改字體

非常感謝您的幫助!

回答

9

兩個字體之間沒有離散映射(在數學意義上)。

如果你可以通過爬坡(10.1,10.2,10.3,...)從10號變成11號,那麼「沒有helvetica neue和helvetica neue bold之間的東西是45%」。

最接近你可以做的是單個字母的CGPath之間的變體,但是這涉及與CoreText的巨大工作。

同時,我只是建議你進行一個簡單的交叉淡入淡出。

也許將來會有一些框架可以幫助你完成這種任務(wink,wink)。

+0

這正是答案我害怕... :-)我還是謝謝你.. – Chiko

+0

pefect答案... – sagarcool89

-1

使用uiview animateWithDuration。塊內部更改字體類型(粗體)

0

您可以設置新尺寸,並在動畫之後更改標籤。

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

享受!

+0

沒了爲你工作? – AtWork

+2

不是真的..我想動畫字體過渡..這只是在動畫結束時改變它。 – 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]; 
        //} 
       }]; 

}

此代碼可能會回答你的問題