Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何动态放大UILabel(标签和字体大小)?_Objective C_Core Animation_Uilabel - Fatal编程技术网

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

Objective c 如何动态放大UILabel(标签和字体大小)?,objective-c,core-animation,uilabel,Objective C,Core Animation,Uilabel,我现在正在做一个iPhone项目。我想动态放大Objective-C中的UILabel,如下所示: 这怎么可能?我想我必须用CoreAnimation来做,但我没有工作。以下是我尝试的代码: UILabel * fooL = //[…] fooL.frame = CGRectMake(fooL.frame.origin.x, fooL.frame.origin.y, fooL.frame.size.width, fooL.frame.size.height); fooL.font = [

我现在正在做一个iPhone项目。我想动态放大Objective-C中的UILabel,如下所示:

这怎么可能?我想我必须用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];
此代码的问题在于它不会动态更改fontsize。

请尝试以下方法:

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

看法 要将转换应用到的视图

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

如果否,则必须为变换动画的每一帧更新视图及其内容,这可能会显著影响帧速率

讨论 例如,如果要在转换期间更改视图的外观,请从一个视图翻转到另一个视图,然后使用容器视图(UIView的实例),如下所示:

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

只需缩放标签,而不是更改字体大小。

只需对
UILabel
对象应用仿射变换

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

按照其他人的建议,使用
transform
属性缩放标签将非常有效。需要记住的一点是,随着标签变大,字体不会增加,而只是呈现的文本,这意味着随着标签变大,它会显得“更模糊”。

我更喜欢手动更改框架和字体大小的MakeScale转换。