Swift:将视图 X 点从中心向后缘对齐

Swift: Align view X points from center towards trailing edge

我有一个 UIImageView,它应该放置在距父 UIView 中心 10 点的位置。在 LTR 中它工作正常但在 RTL 中它应该是 -10 点。

有没有办法让 X 点从中心向后缘对齐?还是我应该根据布局方向手动设置约束?

translatesAutoresizingMaskIntoConstraints用于调整代码的Constraints。

您还应该为顶部和底部添加约束。

@IBOutlet weak var myImageView: UIImageView!

...

override func viewDidLoad() {
  super.viewDidLoad()
  myImageView.translatesAutoresizingMaskIntoConstraints = false
  myImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
  myImageView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true
  myImageView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 10).isActive = true
}
...

如果您将图像视图的 Leading 锚点约束到视图的 CenterX 锚点,并使用 Constant: 10 , 它会自动从 CenterX.

切换到位于 -10 ptsTrailing 锚点

以下是您可以通过代码实现的方法:

    let imgView = UIImageView()
    imgView.backgroundColor = .systemYellow
    imgView.translatesAutoresizingMaskIntoConstraints = false
    if let img = UIImage(systemName: "person") {
        imgView.image = img
    }
    view.addSubview(imgView)
    let g = view.safeAreaLayoutGuide
    NSLayoutConstraint.activate([
        imgView.topAnchor.constraint(equalTo: g.topAnchor, constant: 100.0),
        imgView.widthAnchor.constraint(equalToConstant: 120.0),
        imgView.heightAnchor.constraint(equalTo: imgView.widthAnchor),
        imgView.leadingAnchor.constraint(equalTo: g.centerXAnchor, constant: 10.0),
    ])

这是它在故事板中的样子(垂直红线只是显示水平中心的 1 磅宽视图):

并且在 运行 时,使用 RTL 语言(根本没有代码):