图片缩放和cgaffinetransform值应用Uiimageview不工作



使用uipinchguesters,我得到缩放和转换值如下代码

-(void)Scale:(id)sender {
   if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
            _lastScale = 1.0;
        }
        CGFloat scale = 1.0 - (_lastScale - [(UIPinchGestureRecognizer*)sender scale]);
        CGAffineTransform currentTransform = imgView.transform;
        CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
        imgView.layer.allowsEdgeAntialiasing = YES;
        [imgView setTransform:newTransform];
       // CGAffineTransform newtransform = imgView.transform;
        _lastScale = [(UIPinchGestureRecognizer*)sender scale];
        [self showOverlayWithFrame:imgView.frame];
        CGAffineTransform transform = CGAffineTransformIdentity;
        transform=imgView.transform;
        NSLog(@"%@",NSStringFromCGAffineTransform(transform));
        [[NSUserDefaults standardUserDefaults]
         setValue:[NSString stringWithFormat:@"%f",scale] forKey:@"Scale"];
        [[NSUserDefaults standardUserDefaults]
         setValue:NSStringFromCGAffineTransform(transform) forKey:@"Transform"];
 }

然后在nsuserdefaults中保存变换和缩放值....

并终止应用程序并再次运行它,我们可以映像相同的位置......我像这样更新缩放和转换值

 CGRect frameValue = CGRectFromString(
                                    [[NSUserDefaults standardUserDefaults] stringForKey:@"frame"]);
    NSString *roatValue=[[NSUserDefaults standardUserDefaults] stringForKey:@"Rotation"];
    CGFloat rotation=[roatValue floatValue];
    CGAffineTransform currentTransform=CGAffineTransformFromString([[NSUserDefaults standardUserDefaults] stringForKey:@"Transform"]);
    NSString *scaleValue=[[NSUserDefaults standardUserDefaults] stringForKey:@"Scale"];
    CGFloat scale=[scaleValue floatValue];
    Last Session Rotation
    imgView.transform=CGAffineTransformScale(currentTransform,scale, scale);
    imgView.frame=frameValue;

通过在UIView上设置frame -属性,您将删除该图层上的所有转换。

如果视图被转换,则使用boundsposition

还没有测试过,但翻转集合顺序可能有效:

imgView.frame = frameValue;
imgView.transform = CGAffineTransformScale(currentTransform, scale, scale);

最新更新