目前我在窗口内有一个UIImageView
。当场景加载时,我用以下方法保存其位置:
imageView.center
用户可以拖动它。在某些情况下,项目会被动画回原始位置并保存。当我垂直握住IPad时,一切正常。
当我水平握住它但我无法将其移回到该位置时,因为在横向模式下我无法使用在垂直方向模式下保存的位置。这是因为在Interface Builder中我将项目设置为相对于边框自动调整大小(意味着如果项目位于中心,然后旋转IPad它仍然保持在中心位置)
所以我的问题是:如何才能获得项目在横向方向上的正确原始位置?
我试图像这样用手计算位置:
- (CGPoint)getHorizontalCoordinatesForPoint:(CGPoint)point
{
CGSize size = [[UIScreen mainScreen]applicationFrame].size;
CGFloat relativeX = (point.x / (size.width));
CGFloat relativeY = point.y / (size.height);
CGFloat horizontalScreenX = relativeX * (size.height);
CGFloat horizontalScreenY = relativeY * (size.width);
return CGPointMake(horizontalScreenX, horizontalScreenY);
}
但这个位置有点偏。我认为这是因为我没有考虑导航栏的大小。在ios中是否有一些转换功能已经做了我想做的事情?
答案 0 :(得分:1)
别。
而不是在场景加载时保存[imageView center],而是将其保存在关键点:
-touchesBegan:withEvent :(或者,如果您使用手势识别器,则在手势识别器回调中)。
-didRotateFromInterfaceOrientation:
如果用户在横向工作,退出应用程序,旋转肖像以及重新启动应用程序,会发生轻微的复杂情况。在这种情况下,我会在横向启动应用程序,让自动旋转到纵向并启动中心点。