我正在使用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];
}
答案 0 :(得分:1)
问题是您正在使用转换进行扩展。这需要原始渲染并向上或向下缩放,但不会改变它。换句话说:“质量”不会改变,只会以你显示它的大小。您想要的可能是执行以下步骤:
通过更改帧大小,使用新大小再次绘制视图,这将比放大较小视图产生更好的质量。
我不确定在捏合期间是否可以更改框架(可能会弄乱识别器),也许您需要应用正在进行的转换并执行change-frame-size-method在完成收尾后完成手势以获得高质量版本(有时可以使用滚动视图查看类似的模式)。