相对于 UIView 在其 subViewController 上的位置,在 UIViewController 上定位 UIPageControl。

Posted

技术标签:

【中文标题】相对于 UIView 在其 subViewController 上的位置,在 UIViewController 上定位 UIPageControl。【英文标题】:Positioning a UIPageControl on a UIViewController with respect to the position of a UIView on it's subViewController. 【发布时间】:2015-10-22 22:02:46 【问题描述】:

所以我在布局和约束方面遇到了问题。

我在http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/ 使用 UIPageViewControllers 的 app coda 教程,但我做了一些小改动。

我已将内容视图控制器作为子视图添加到我的主视图控制器。它匹配其父视图的高度和宽度。在这个子视图上,我布置了一个 UIImageView 和一个 UISegmentedControl(见截图)。我还为这个视图控制器添加了一些约束,它将 UIImageView 绑定到其容器的顶部、右侧和左侧,分段控件也以图像视图为中心,并为上面的 uiimageview 和下面的容器底部添加了约束。这样做的效果是视图控制器在不同的设备尺寸上保持其外观。 但是,我需要在 UIImageView 的底部放置一个 UIPageControl (页面指示器),但我不想将它放在子视图上,因为它会随着 UIPageViewController 的页面转动 - 所以我将它放在 SuperView 上(见截屏)。我用;

[self.view bringSubviewToFront:self.pageControl];

将我的页面控件始终放在视图层次结构的前面。最终结果应该如下图所示,

但是页面指示器在superview上的相对位置会随着不同的设备而变化。

我的问题是如何在它自己的 viewController 上向此页面指示器添加约束,以便当页面指示器位于超级视图上时,它始终显示在位于子视图上的 UIImageview 的底部,无论它是什么设备正在运行。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

所以我找到了一个简单的答案......

只需向 SuperView 添加一个新的 UIImageView 并设置类似的约束,使其遵守与子视图中的 UIImageView 相同的缩放规则。然后使用布局约束将页面指示器锚定到新 UIIMageView 的底部。

见截图。

【讨论】:

以上是关于相对于 UIView 在其 subViewController 上的位置,在 UIViewController 上定位 UIPageControl。的主要内容,如果未能解决你的问题,请参考以下文章

相对于 UIScrollView 锁定 UIView 位置

相对于父视图的底部定位 UIView?

相对于 UITableview 更改 UIView 高度

子视图相对于父 UIView 的起源

将自定义 UIView 锚定到相对于屏幕大小的屏幕底部

旋转UIView并使其更改视图大小以适应相对于旋转的空间