我正在使用 UIPinchGestureRecognizer 缩放 UILabel
文本。但我无法实现文本的平滑边缘或平滑度。
缩放代码:
UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
[pinchRecognizer setDelegate:self];
[holderView addGestureRecognizer:pinchRecognizer];
-(void)scale:(id)sender {
[self bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]];
if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
lastScale = 1.0;
return;
}
CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
[[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
lastScale = [(UIPinchGestureRecognizer*)sender scale];
}
最佳答案
问题在于您正在使用转换进行缩放。这会采用原始渲染并将其放大或缩小,但不会改变它。换句话说:“质量”不会改变,只会改变显示的尺寸。您想要的可能是执行以下步骤:
- 将转换重置回身份(下一步需要执行此操作)。
- 计算并应用新的帧尺寸,重新定位 View 。
- 应用旋转变换。
通过更改帧大小,将使用新的大小再次绘制 View ,这将比放大较小的 View 获得更好的质量。
我不确定在捏合过程中是否可以更改框架(这可能会干扰识别器),也许您需要应用现在正在执行的转换,并在执行更改框架大小方法时完成手势是为了在捏合完成后获得高质量版本(有时您可以在 ScrollView 中看到类似的图案)。
关于iphone - 使用手势缩放 UIlabel 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817133/