【发布时间】: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