我正在尝试设计如下屏幕。我可以为多种设备进行此设计,例如IPhone 5和5S。这意味着我的应用程序在IPhone 5和5S上正常运行。但是当我尝试在iPhone 6或6S上运行它时,我的设计被打破并中断。如何为所有设备进行通用设计。
答案 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)
所以,这是我之前使用的模式:
灰色条只是UIViews,它可以扩展和缩小,以保持所有按钮在不同的屏幕上均匀分布。在您的实际设计中,这些将是透明的。这些视图中的每一个都有一个约束,使它们具有相同的高度 - 这使得按钮之间的空间保持相等,而不管屏幕的垂直尺寸如何。
其他约束是中间按钮被约束为垂直居中,并且每个按钮具有增加的包含视图的尾随空间。每个按钮也约束为与上方和下方视图的间距为0点。
当您在小屏幕上运行时,间隔物会缩小,并且在更大的屏幕上,它们会生长。在较大的屏幕上,如果将按钮设置为使用内在大小,则还应该使用更大的按钮。
这不会保留椭圆的形状,但你可以使按钮的x坐标与屏幕的宽度成比例,我猜。取决于你的整体目标是什么。