相对于ADBannerView定位对象

时间:2015-03-26 16:35:12

标签: ios objective-c sprite-kit iad

我一直在试图围绕iAd横幅视图的坐标,这显然符合自己的规律。我在屏幕底部有一个横幅视图,我同样定义它:

    adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    CGRect adFrame = adView.frame;
    adFrame.origin.y = self.scene.view.frame.size.height - adView.frame.size.height;
    adView.frame = adFrame;
    [self.view addSubview:adView];

(这是一个精灵套件场景内部)现在,我想要相对于这个横幅视图定位一个对象/节点。我第一次将这个物体比横幅高出5的本能就是说

node.position = CGPointMake(CGRectGetMidX(self.frame), adView.frame.size.height + 5);

然而,这并没有给我任何有希望的结果,所以我决定对它进行硬编码,结果发现如果我将y值设置为64。左右,我就能得到我想要的结果。我在iPhone 6上测试了这个值,它给了我想要的东西,但是当我在iPhone 5上试用它时,它在横幅视图下消失了。如果无论模型如何,iPhone adBannerView的高度都是50,这似乎是非常矛盾的。

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您的场景正在缩放,因此您指定的位置会因设备而异。您希望相对于视图定位节点,因为这是您的横幅所在的位置。为此,您可以使用SKView的convertPointToScene方法将视图坐标转换为场景坐标。有关详细信息,请参阅我关于相对于视图here定位节点的答案。

您也可以通过将场景scaleMode设置为ResizeFill来选择不缩放场景。这将导致您的位置在各设备之间保持一致,因为您的坐标不会缩放。您可以在此处查看有关场景缩放here的答案,以获取更多信息。