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 pts
的 Trailing 锚点
以下是您可以通过代码实现的方法:
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 语言(根本没有代码):
我有一个 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 pts
的 Trailing 锚点
以下是您可以通过代码实现的方法:
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 语言(根本没有代码):