适应具有自动布局的所有设备

时间:2016-07-13 15:33:11

标签: ios iphone user-interface autolayout

我正在尝试设计如下屏幕。我可以为多种设备进行此设计,例如IPhone 5和5S。这意味着我的应用程序在IPhone 5和5S上正常运行。但是当我尝试在iPhone 6或6S上运行它时,我的设计被打破并中断。如何为所有设备进行通用设计。

enter image description here

2 个答案:

答案 0 :(得分:2)

这是一个函数,对于给定的索引

,它给出了一个CGPoint偏离中心的位置
func offset(forIndex index: Int) -> CGPoint {
  let part = M_PI / 11.0
  let phi = part * Double(index)
  let x = Double(UIScreen.mainScreen().bounds.width) * sin(phi)
  let y = Double(UIScreen.mainScreen().bounds.height) * cos(phi)
  print("----")
  print("index \(index)")
  print("x \(x)")
  print("y \(y)")

  return CGPoint(x: CGFloat(x), y: CGFloat(y))
}

使用此功能,您可以相应地定位按钮

答案 1 :(得分:0)

所以,这是我之前使用的模式:

enter image description here

灰色条只是UIViews,它可以扩展和缩小,以保持所有按钮在不同的屏幕上均匀分布。在您的实际设计中,这些将是透明的。这些视图中的每一个都有一个约束,使它们具有相同的高度 - 这使得按钮之间的空间保持相等,而不管屏幕的垂直尺寸如何。

其他约束是中间按钮被约束为垂直居中,并且每个按钮具有增加的包含视图的尾随空间。每个按钮约束为与上方和下方视图的间距为0点。

当您在小屏幕上运行时,间隔物会缩小,并且在更大的屏幕上,它们会生长。在较大的屏幕上,如果将按钮设置为使用内在大小,则还应该使用更大的按钮。

这不会保留椭圆的形状,但你可以使按钮的x坐标与屏幕的宽度成比例,我猜。取决于你的整体目标是什么。