convertPoint:fromView:在模拟器上运行良好,而不是在设备上运行

时间:2011-05-16 06:13:55

标签: ios uiview cgpoint

我很高兴看到这一点:answer for how to convert point of a subview 它在模拟器上对我来说非常适合。

但由于某种原因,它无法在设备上运行...... 可能是视图位置由设备管理不同 - 或者它只是另一个谜?或者(希望)我写错了,你们可以帮忙...... :)

这是我的专栏:

CGPoint yoel = [imagePressed.imageView convertPoint:imagePressed.frame.origin toView:nil];

2 个答案:

答案 0 :(得分:8)

我遇到了与此问题相关的不同问题,并注意到我在转换矩形时必须考虑屏幕的比例。 (即它在模拟器上工作不是因为它是模拟器,而是因为模拟器处于非视网膜模式)

// the following convertRect is like asking a view: "what would one of your subviews (aView) have for a frame in my (toView) coordinate space if it were to become my subview?
    _originalFrame = [[aView superview] convertRect: aView.frame toView: self];

    CGFloat scale = [[UIScreen mainScreen] scale];

    _originalFrame.origin.x /= scale;
    _originalFrame.origin.y /= scale;
    _originalFrame.size.width /= scale;
    _originalFrame.size.height /= scale;

    NSLog(@"Converted Frame: %@", NSStringFromCGRect(_originalFrame));

答案 1 :(得分:2)

行。这是%d和%f之间差异的教训:) 显然它很完美。

我的错误是 - 我在模拟器上 DLog(@"yoel is %f", yoel.x); DLog(@"yoel is %f", yoel.y); 就在它在设备上运行之前我将其更改为  DLog(@"yoel is %d", yoel.x); DLog(@"yoel is %d", yoel.y); 因为CGPoint处于浮动状态,所以我得到0而不是正确的坐标...

另一个经验教训 - 在我将测试从模拟器切换到设备之前,我永远不会更改代码,所以不要责怪苹果,而是我自己:)