繁体   English   中英

如何将视图/对象固定在不同iPhone尺寸的相对相同位置?

[英]how to pin the view/object at the relative same place on different iPhone size?

如下图所示,在不同尺寸的iPhone(4英寸,4.7英寸,5.5英寸)上,蓝色和红色视图仍处于相同的相对位置,但是仍然可以向下滚动以获取更多空间以显示更多信息,以及会吗

我对如何使用滚动视图实现这种方法感到困惑。 非常感谢您的帮助! 在此处输入图片说明

如@Azat所建议的,我们可以使用“ UIScreen.mainScreen()。bounds.height”在运行时基于不同的iPhone尺寸获取不同的高度,从而可以将视图动态地布置在相对固定的位置。 对于上述问题描述中的示例:

  1. 将红色和蓝色视图放入堆栈视图,以使它们成为一个实体
  2. 计算场景高度:UIScreen.mainScreen()。bounds.height
  3. 计算我们需要堆栈视图(将红色和蓝色视图组合在一起)与场景顶部边缘的最远距离
  4. 让我们假设,除了我们可以看到的第一个应用启动界面之外,我们要向下滚动以查找更多内容,并添加了另一个橙色视图
  5. 我们想将橙色视图放置在场景的正下方,其底部距scrollview底部边缘20个点
  6. 在情节提要中,将scrollView固定到视图边缘,将堆栈和橙色视图固定在视图的前后,将红色,蓝色和橙色视图的高度固定到120点(可以更改所需的高度)

对于1,2,3,4,5,我们可以在函数中编写代码,然后在viewDidLoad中调用它,例如:

    func viewLayout() {
    let bottomMargin:CGFloat = 20.0
    let sceneHeight = UIScreen.mainScreen().bounds.height
    let topDistance = sceneHeight - stackView.frame.height - bottomMargin
    let metric = ["topDistance": topDistance, "bottomMargin": 20.0]
    let views = ["stackView": stackView, "orangeView": orangeView]

    NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-topDistance-[stackView]-bottomMargin-[orangeView]-bottomMargin-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metric, views: views))
    }

因此,无论您使用的iPhone尺寸如何,堆栈视图都始终布置在场景底部,离底部20个点,并且您可以向下滚动以查看橙色视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM