我有一个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 和新图像视图 x,y 就会关闭。缩放比例越大,差异越大。我尝试使用触摸点和变换(旋转和缩放(计算 CGPoint:
CGPoint newpoint = CGPointApplyAffineTransform(newimageposition, CGAffineTransformConcat(rotatetransform,scaletransform));
但这会导致负 x...
不知何故,我必须撤消旋转和缩放
通过设置视图的center
来定位视图,这在变换下是不变的。不要使用它的frame
.