繁体   English   中英

旋转和缩放后移动UIImageView时出现奇怪的行为x,y坐标

[英]Strange behavior x,y coordinates when moving UIImageView after rotating and scaling

我已经将UIImageView添加到UIScrollView中。 您可以点击滚动视图,另一个UIImageView被添加到“主” UIImageView中。 我使用以下代码从触摸获取坐标并将其转换为本地坐标:

- (void)tapped:(UITapGestureRecognizer *)gestureRecognizer {
    CGPoint position = [gestureRecognizer locationInView:_imagescrollview];
    CGPoint positioninimageview = [_imagescrollview convertPoint:position toView:_editimageview];
    newimageview.frame = CGRectMake(positioninimageview.x, positioninimageview.y,160.f,160.f);
    [self.editimageview addSubview:newimageview];
}

这可行!

我使用以下代码旋转和缩放UIImageView:

- (void)applyTransform {
    CGAffineTransform rotatetransform = CGAffineTransformMakeRotation(_rotation);
    CGAffineTransform scaletransform = CGAffineTransformMakeScale(_scale, _scale);
    newimageview.transform = CGAffineTransformConcat(rotatetransform,scaletransform);
}

这也有效!

我使用以下代码移动UIImageView:

- (void)setEyePositionAndReposition:(CGPoint)eyeposition {
    CGAffineTransform t = newuiimageview.transform;
    newuiimageview.transform = CGAffineTransformIdentity;
    newuiimageview.frame = CGRectMake(eyeposition.x, eyeposition.y, _eyeimageview.frame.size.width, _eyeimageview.frame.size.height);
    newuiimageview.transform = t;
}

只要眼睛不旋转和/或缩放,此功能才起作用。 如果旋转角度为90,180,270,360等,刻度为1.f,则没有问题。 缩放比例增加并且我要移动视图时,触摸x,y和newimageview x,y都会关闭。 缩放比例越大,差异越大。 我试图用接触点和转换(旋转和缩放)来计算CGPoint:

CGPoint newpoint = CGPointApplyAffineTransform(newimageposition, CGAffineTransformConcat(rotatetransform,scaletransform));

但这会导致负x ...

我不得不以某种方式撤消旋转和缩放

通过设置视图的center定位视图,该对象在变换下不变。 请勿使用其frame

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM