UIPopoverController 锚点位置

Posted

技术标签:

【中文标题】UIPopoverController 锚点位置【英文标题】:UIPopoverController Anchor Position 【发布时间】:2011-03-30 03:49:43 【问题描述】:

我有一个 UIPopOverController,它的内容控制器是一个 UINavigationController。 我正在根据推入/弹出的控制器的内容大小调整弹出框大小。最初,我使用presentPopoverFromRect:inView:permittedArrowDirections:animated: 方法呈现弹出框。锚点位置指向我作为参数传递的矩形的中心。如果我将控制器(其内容大小很小)推入 navigationController ,弹出框会从底部缩小并移动到我之前提到的矩形上方。

我尝试每次都显示弹出框(用于推送/弹出),锚点位置保持@相同点但是动画受到影响,看起来不太好。

无论弹出框大小变化如何变化,都需要做什么才能使锚点位置保持不变?

【问题讨论】:

【参考方案1】:

我也遇到过同样的问题,看来再次调用presentPopoverFromRect 方法会使锚点保持在同一位置

例如

[self.myPopOver presentPopoverFromRect:rectOrigin inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO];

希望它也适用于您的情况

【讨论】:

【参考方案2】:

呈现UIPopoverController后换帧:

 [popupController presentPopoverFromRect:btn.frame inView:self.view permittedArrowDirections:0 animated:YES];

CGRect popupFrame = popupController.contentViewController.view.superview.superview.superview.frame;
popupFrame.origin.y = btn.frame.origin.y + btn.frame.size.height+75;

popupController.contentViewController.view.superview.superview.superview.frame = popupFrame;

【讨论】:

嗨!通过调用 superview 超过 1 次来获得基本视图是个坏主意。

以上是关于UIPopoverController 锚点位置的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序 - 实现页面跳转,跳转到指定锚点位置

jQuery在页面加载时移动到锚点位置

jQuery在页面加载时移动到锚点位置

jQuery在页面加载时移动到锚点位置

UnityUGUI无法修改UI元素的Pivot锚点位置

photoshop中钢笔工具使用技巧