如何动态放大UILabel(标签和字体大小)?

我目前正在开发一个iPhone项目。 我想在Objective-C中动态扩大UILabel,如下所示:

替代文字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];

这个代码的问题是它不会动态改变字体大小。


所有你需要做的就是对UILabel对象应用仿射变换。

CGFloat scaleFactor = 2.0f;
label.transform = CGAffineTransformMakeScale(scaleFactor, scaleFactor); // Enlarge by a factor of 2.

按照他人使用transform属性建议的方式缩放标签将会很好。 要记住的一件事是,随着标签变大,字体不会增加,而只是呈现的文本,这意味着随着标签变大,它会显得“模糊”。


试试这个方法:

  • (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache
  • 参数:transition应用于视图的转换。 UIViewAnimationTransition中描述了可能的值。

    查看将转换应用于的视图。

    缓存如果为“是”,则视图的前后图像将渲染一次,并用于在动画中创建帧。 缓存可以提高性能,但是如果将此参数设置为YES,则不得在转换期间更新视图或其子视图。 更新视图及其子视图可能会干扰缓存行为,并导致视图内容在动画过程中呈现错误(或位置错误)。 您必须等到转换结束才能更新视图。

    如果否,则必须为每个过渡动画帧更新视图及其内容,这可能会明显影响帧速率。

    讨论如果您想在转换过程中更改视图的外观(例如,从一个视图翻转到另一个视图),请使用UIView的容器视图,如下所示:

    开始一个动画块。 在容器视图上设置转场。 从容器视图中删除子视图。 将新的子视图添加到容器视图。 提交动画块。

    链接地址: http://www.djcxy.com/p/45259.html

    上一篇: How to enlarge dynamically an UILabel (label and font size)?

    下一篇: SCORM lib for php