2016-07-13 38 views
-3

我试图设计一个如下所示的屏幕。我可以为几个设备(例如iPhone 5和5S)进行此设计。这意味着我的应用程序可以在iPhone 5和5S上正常运行。但是当我尝试在iPhone 6或6S上运行它时,我的设计被破坏并中断。我如何为所有设备进行通用设计?适应所有具有自动布局的设备

enter image description here

+1

使用自动布局。 – Moritz

+1

你可以在这里发布你的代码给我们看吗? – keithbhunter

+0

我已经使用Autolayout,所以我没有代码。 – Alp

回答

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)) 
} 

有了这个功能,你可以定位你的按钮相应

+0

我更喜欢使用自动布局来实现这种自定义的策略。 –

0

所以,这里有一个我以前用过的图案:

enter image description here

灰色条只是UIViews的扩大和缩小,以保持所有的按钮在不同的屏幕上相同的间隔。在你的实际设计中,这些将是透明的。这些视图中的每一个都有一个限制,使它们具有相同的高度 - 这将保持按钮之间的空间相等,而不管屏幕的垂直大小如何。

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

当你在一个小屏幕上运行这个,间隔将收缩,并在一个更大的屏幕上,他们会增长。在较大的屏幕上,如果设置为使用固有尺寸,您还应该获得更大的按钮。

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