Xcode Swift 根据屏幕大小移动 UIElements

Posted

技术标签:

【中文标题】Xcode Swift 根据屏幕大小移动 UIElements【英文标题】:Xcode Swift Moving UIElements based on screen size 【发布时间】:2016-07-16 00:53:02 【问题描述】:

我正在创建一个简单的应用程序,屏幕底部有两行三个视图。在横向/更宽的屏幕上,我想将顶行放到底行。

|       Portrait       |   |              Landscape                |
| AAAAAAAAAAAAAAAAAAAA |   |         AAAAAAAAAAAAAAAAAAAA          |
| BBBBBBB      CCCCCCC |   | BBBBBBB                       CCCCCCC |
------------------------   -----------------------------------------

是否有几行 Swift 代码可以让我执行以下操作?

If (left edge of A) > (right edge of B) then set the (bottom of A to the Bottom of B)

注意事项 1) A 始终居中 2) B 和 C 大小相同 3) B 附加到左边缘 4) C 附加到右边缘

【问题讨论】:

你应该看看developer.apple.com/library/ios/documentation/UIKit/Reference/… 我已经通读了该文档,但我没有看到如何配置堆栈,以便它可以加速行,否则它有两行。你能提供更多细节吗? 【参考方案1】:

我找到了当屏幕足够宽时框架/组件移动的解决方案

@IBOutlet weak var aaaVertPosition: NSLayoutConstraint!

// in viewDidAppear
moveAaaStack

override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    moveAaaStack()


func moveAaaStack() 
    let aaaFrame: CGRect = selectedAaaOutlet.frame
    let bbbFrame: CGRect = selectedBbbOutlet.frame
    let leftEdgeOfAAA = aaaFrame.origin.x
    let rightEdgeOfBBB = bosFrame.origin.x + bosFrame.size.width
    print("AAA = \(leftEdgeOfAAA) & BBB = \(rightEdgeOfBBB)")
    if (leftEdgeOfAAA + 8 > rightEdgeOfBBB) 
        print("*** Moving AAA Stack down ***")
        aaaVertPosition.constant = 8
     else 
        print("*** Moving AAA Stack up ***")
        aaaVertPosition.constant = 68.5
    

【讨论】:

以上是关于Xcode Swift 根据屏幕大小移动 UIElements的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中增加字体大小以实现 swift [重复]

如何在 swift 中使用 NSLayoutConstraint 根据屏幕大小更改设计

XCode:调整图像大小使用纵横比并向下移动图像下方的元素

在启用自动布局的情况下调整 swift/xcode 中的按钮大小

移动端适配

如何在 swift 中制作动画(xcode 6 beta)