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 根据屏幕大小更改设计