簡體   English   中英

使用手勢縮放UIlabel文本

[英]Scaling UIlabel Text using Gesture

我正在使用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];
    }

在此處輸入圖片說明

問題在於您正在使用轉換進行縮放。 它將采用原始渲染並將其放大或縮小,但不會更改。 換句話說:“質量”不會改變,只是以您顯示的大小為准。 相反,您可能想要執行以下步驟:

  • 將轉換重置回身份(下一步需要執行此操作)。
  • 計算並應用新的框架大小,重新定位視圖。
  • 應用旋轉變換。

通過更改框架大小,可以使用新的大小再次繪制視圖,這將比放大較小的視圖產生更好的質量。

我不確定在捏合過程中是否可以更改框架(可能會與識別器混淆),也許您需要應用當前正在執行的轉換,並在手勢為空時執行change-frame-size-method完成捏操作后即可獲得高質量的版本(有時可以通過滾動視圖看到類似的圖案)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM