【问题标题】:autolayout view gets overlapped on smaller devices自动布局视图在较小的设备上重叠
【发布时间】:2017-07-24 06:49:42
【问题描述】:

基本上我有一个高度为 x 的视图 和其他 4 个具有相同高度 y 的视图,所有这 5 个视图都是垂直的,具有 10 px 的空间

所有这些视图又有一些依赖于它们的子视图。

对于这种情况,stackview 是理想的,但它支持从 iOS 9 开始,不幸的是我必须从 iOS 6 开始支持

所以基本上我用前导、尾随、顶部、底部和高度约束修复了所有视图...

它在 iPhone 7s 中运行良好 ...但在 iphone 4s 中,视图彼此重叠

在 iphone se 中,视图非常拥挤..

我一直认为高度会根据 iPHone 4s 的屏幕尺寸而变化,但那没有发生

我怎样才能解决这个问题?

【问题讨论】:

  • 如果你配置了固定高度,为什么你会认为高度会改变?我意识到这可能是你无法控制的,但 ios9+ 是 95% 的设备;我认为运行
  • @Paulw11 - 但根据项目规范,我必须支持:(
  • 如果我删除高度约束,我可以在没有任何 UI 问题的情况下实现。如果你被赋予这样做,你会使用什么约束......你能逐步解释我吗
  • 如果您不能使用堆栈布局,那么您将需要使用纵横比约束来设置您的第一个项目相对于屏幕高度的高度,然后在当屏幕高度已知时,其他项目和第一项或在运行时修改您的约束
  • @Paulw11 - 如何使用纵横比约束来设置第一个项目相对于屏幕高度的高度?如果你能用截图解释一下,我真的很感激你

标签: ios autolayout constraints aspect-ratio autoresizingmask


【解决方案1】:

有两种方法可以解决您面临的问题。

第一:

您可以使用比例高度约束,而不是为您的任何UIView 提供固定高度。选择您的 UIViewcontrol + 从您的 UIView 拖动到主超级视图。选择等高约束。现在,双击高度约束并将乘数设置为 0.15 或任何您认为不错的值。这将确保由此创建的视图始终是整个视图高度的 0.15 倍。现在,您可以按照相同的步骤创建与此视图成比例的其他视图,也可以创建与超级视图成比例的其他视图。

第二: (对于项目,我更喜欢这种方法,因为有时您需要创建表单,上述方法可能仍会将元素推离屏幕)。

这将使用UIScrollView。在您的主视图中添加一个 UIScrollView 并添加一个 leadingtrailingtopbottom 约束到您的超级视图。将 UIView 添加到此 UIScrollView 并为其添加 leadingtrailingtopbottom 作为好吧。另外给它一个 equal heightwidth 约束到 UIScrollView 的超级视图,具有低优先级,比如 250。现在在这个 UIView 中添加所有元素但是你看起来很合适。固定高度,成比例的高度,然后愉快地运行它。但请确保为您的最底部视图添加一个最小值>=

如果内容离开屏幕,屏幕将自动变为可滚动,否则根本无法滚动。

【讨论】:

    【解决方案2】:

    使用前导、尾随、顶部、底部和等高约束修复所有视图,而不仅仅是高度(不给任何视图固定高度)

    【讨论】:

    • 如何设置等高约束?你能附上截图或给我步骤吗?我是这个东西的新手
    • 谢谢。我的第一个视图是一个高度,而其他视图的高度不同..所以给所有兄弟姐妹相同的高度我认为是个坏主意..我该如何放置这没有重叠其他观点? P.S 这些视图中的每一个又在一个又一个垂直的内部有一些视图
    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多