Swift 3 超过宽度时如何锚定底部



我正在编写一个应用程序,我想知道如何在同一行的总宽度超过设备宽度时将视图锚定到上一个视图的底部而不是右侧。

基本上是这样的:

View 1: width=150 anchor to superview's leftAnchor
View 2: width=500 anchor to view1's rightAnchor
View 3: width=1000 anchor to view1's bottomAnchor because total width in same row
exceeds device width
#device width=1200

任何帮助,不胜感激。对不起,英语不好,不是母语人士。

Ps. 所有高度都相同,宽度是动态的

主要的挑战是,在它们受到限制之前,我无法知道我的视图的宽度。

所以我使用了斯威夫特的估计。

let size = CGSize(width: UIScreen.main.bounds.width, height: 50)
let attributeHeight = [NSFontAttributeName: UIFont.preferredFont(forTextStyle: .subheadline)]
let estimatedHeight = NSString(string: _title).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attributeHeight, context: nil)
self._estimatedWidth = estimatedHeight.width + 32

之后,很容易根据我的需要使用 for 循环锚定它们

相关内容

  • 没有找到相关文章

最新更新