【问题标题】:Strange behavior x,y coordinates when moving UIImageView after rotating and scaling旋转和缩放后移动 UIImageView 时的奇怪行为 x,y 坐标
【发布时间】:2015-07-27 15:58:14
【问题描述】:

我已将 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...

我必须以某种方式撤消旋转和缩放

【问题讨论】:

    标签: ios objective-c uiimageview rotation cgaffinetransform


    【解决方案1】:

    通过设置其center 来定位视图,这在变换下是不变的。不要使用它的frame

    【讨论】:

    • 像魅力一样工作!我现在设置 UIImageView 的中心而不是框架。
    • 很高兴你能成功。不过,这不是魅力:这是法律。您必须从不设置已应用非恒等变换的视图的框架。它就在文档中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多