iOS 视图定位错误

Posted

技术标签:

【中文标题】iOS 视图定位错误【英文标题】:iOS view positioning bug 【发布时间】:2011-04-24 00:07:07 【问题描述】:

在我的应用中定位某些内容(在本例中为 Admob 广告)时遇到了一个奇怪的问题。我的视图是标准的UITableViewControllers,我希望将广告定位到视图的最底部(不过在工具栏上方)。

这是我用来放置广告的代码(这是 Admob SDK 所需的委托方法)。

- (void)didReceiveAd:(AdMobView *)adView 
    // get the view frame
    //CGRect frame = self.navigationController.view.frame;
    CGRect frame = self.view.superview.frame;

    // put the ad at the bottom of the screen
    adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48);

    [self.view.superview addSubview:adMobAd];

此代码在最初放置广告时效果很好,并且广告出现在我想要的屏幕底部。但是,有时广告会在某些用户交互后跳到屏幕中间。

例如,当用户在 tableview 中选择并输入时,下一个控制器被加载到导航控制器堆栈中。当用户导航回广告所在的初始 tableview 控制器时,广告现在将位于屏幕中间而不是底部。

或者如果用户选择一个弹出新modalViewController的按钮,当modalViewController被关闭时也会发生同样的事情。

我是否将广告定位到了错误的位置?加载视图时是否需要始终重新定位广告?我错过了什么?

【问题讨论】:

【参考方案1】:

如果你改用CGRect frame = self.view.frame; 会怎样。

您是否隐藏了您的导航控制器?这也可能导致它向上移动

【讨论】:

不,我没有手动隐藏导航控制器。只需通过 presentModalViewController 方法。此外,如果我将它锚定到 self.view.frame 它将它锚定到 tableview 而不是导致滚动问题的主 UIView 因为我希望它始终被锁定到可见“视口”的底部

以上是关于iOS 视图定位错误的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 部分索引在 iOS 7 中定位错误的单元格,顶行隐藏在导航栏下

iOS小技能:封装定位SDK,统一数据模型和错误处理。

只需 2 步,定位集成融云时的崩溃与错误 - iOS 篇

为啥只有当我覆盖它时,我的 UINavigtionController 栏才会在 iOS 7 上错误地定位? [复制]

错误:无法定位 SDK“iphonesimulator9.0”

在日志中定位自动布局约束错误