检测CGAffineTransformed视图是否超出屏幕/ UIView的范围
我有几个视图,我可以拖动,旋转,缩放。我想做到这一点,他们不能药物,旋转或缩小屏幕。
拖动似乎不是一个问题因为我没有使用变换来生成新位置并查看该新位置是否会将视图从屏幕上移开。
当我旋转或缩放时,我使用CGAffineTransform(CGAffineTransformedRotate或CGAffineTransformScale)并且我似乎无法获得新帧的实际内容而不将其实际应用于我的视图。
CGRect newElementBounds = CGRectApplyAffineTransform(element.bounds, CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]));
CGRect elementBoundsInSuperView = [element convertRect:newElementBounds toView:[element superview]];
elementBoundsInSuperView不是我期望它的Rect,它离开了。
我也尝试先在SuperView中获取边界,然后将变换应用到它,这也不对。
CGRect elementBoundsInSuperView = [element convertRect:element.bounds toView:[element superview]];
CGRect newElementBounds = CGRectApplyAffineTransform(newElementBounds, CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]));
[gestureRecognizer视图]应该与元素相同。
没有找到相关结果
已邀请:
1 个回复
脖呐
,2048定义。 Pan手势只调用calcCenterFromXposition:yPosition:fromBoundsInSuperView:方法设置其中心,如果中心超出界限,它只是调整并保持元素在边界内
所以手柄的Pinch和Rotation非常相似。而不是直接调用calc Center,我们调用另一种方法来帮助确定我们是否在边界内。
夹紧屏幕方法
Handle Rotation与Pinch类似,我们有一个帮助方法,看看我们是否旋转屏幕。
旋转屏幕外方法
Calc屏幕定位辅助方法