【发布时间】:2021-02-07 15:18:14
【问题描述】:
我希望我的 swift 代码将每个 imageview 间隔视图控制器宽度的 5%。所以 imageview a 是宽度的前 10%,然后是 5% 的间隙,然后是另一个宽度为 10% 的图像视图,然后是 5% 的间隙。您可以在下图中看到我正在寻找的内容。现在我的代码没有在 smith += self.view.widthAnchor * 0.05 处编译错误。所有代码如下。
import UIKit
class ViewController: UIViewController {
var box1 = UIImageView();var box2 = UIImageView();var box3 = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
var smith : Double = 0
[box1,box2,box3].forEach{
view.addSubview($0)
$0.backgroundColor = .red
$0.translatesAutoresizingMaskIntoConstraints = false
$0.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: CGFloat(smith)).isActive = true
$0.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
$0.heightAnchor.constraint(equalTo: self.view.heightAnchor,multiplier: 0.1).isActive = true
$0.widthAnchor.constraint(equalTo: self.view.widthAnchor,multiplier: 0.1).isActive = true
smith += self.view.widthAnchor * 0.05
}
print(smith)
}
}
【问题讨论】:
-
使用堆栈视图
-
我同意堆栈视图可能是最好的,但这是第二个想法 - 虽然在
viewDidLoad中设置 most 约束效果最好(即使在自定义init中) - 框架(如屏幕宽度尚不可用。了解视图和视图控制器生命周期并(1)设置您的间隔 - 无论是视图还是约束的常量/乘数 - 稍后当 iOS 确定屏幕尺寸时,然后( 2) 在生命周期内工作以更改方向...您确实意识到所有设备在横向/纵向时都有不同的宽度。 -
@dfd 你能提供你的建议作为答案吗?我会给你功劳的。
-
@RobertCrabtree 你能提供你的建议作为答案吗?我会给你的。
标签: swift foreach autolayout var addition