如何以编程方式通过约束在其他两个视图之间和下方添加居中视图? Swift
How to add a view an centered between and under two other views by constraint programmatically? Swift
- 如何在
ratingLabel
和 rateButton
下的距离中心添加 bestChoiceImage
?
- 为什么,当我使用
print(anysubview.center.x)
时它 = 0.0,但在 Simulator 中一切都留在原位?
/activate inside viewWillappear
let viewHeight = self.view.frame.height
let viewWidth = self.view.frame.width
NSLayoutConstraint.activate([
reebokClassic.topAnchor.constraint(equalTo: self.view.topAnchor, constant: viewHeight/12),
reebokClassic.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
modelName.topAnchor.constraint(equalTo: reebokClassic.bottomAnchor, constant: viewHeight/100),
modelName.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
sneakersImage.topAnchor.constraint(equalTo: modelName.bottomAnchor, constant: viewHeight/40),
sneakersImage.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
sneakersImage.widthAnchor.constraint(equalToConstant: viewWidth * 0.8),
sneakersImage.heightAnchor.constraint(equalToConstant: viewWidth * 0.8),
segmentedController.widthAnchor.constraint(equalToConstant: viewWidth),
segmentedController.topAnchor.constraint(equalTo: sneakersImage.bottomAnchor, constant: viewHeight/80),
segmentedController.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
segmentedController.heightAnchor.constraint(equalToConstant: viewHeight/23),
lastTimeWeared.topAnchor.constraint(equalTo: segmentedController.bottomAnchor, constant: viewHeight/40),
lastTimeWeared.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: viewHeight/100),
lastTimeWeared.widthAnchor.constraint(equalToConstant: viewWidth/3),
ratingLabel.topAnchor.constraint(equalTo: segmentedController.bottomAnchor, constant: viewHeight/40),
ratingLabel.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -viewHeight/50),
ratingLabel.widthAnchor.constraint(equalToConstant: viewWidth/3),
slipOnButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -viewHeight/20),
slipOnButton.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -viewWidth/20),
slipOnButton.widthAnchor.constraint(equalToConstant: viewWidth/5),
slipOnButton.heightAnchor.constraint(equalToConstant: viewHeight/20),
rateButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -viewHeight/20),
rateButton.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: viewWidth/20),
rateButton.widthAnchor.constraint(equalToConstant: viewWidth/5),
rateButton.heightAnchor.constraint(equalToConstant: viewHeight/20),
bestChoiceImage.widthAnchor.constraint(equalToConstant: viewWidth/3),
bestChoiceImage.heightAnchor.constraint(equalToConstant: viewWidth/3),
bestChoiceImage.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
bestChoiceImage.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant:
-(**rateButton.center.y - ratingLabel.center.y - bestChoiceImage.frame.height/2**))
])
将 ratingLabel 和 rateButton 放在容器视图(例如堆栈视图)中,并在 bestChoiceImage 和该容器视图之间进行约束。
您可能在自动布局引擎实际完成工作之前打印它。例如,尝试在 viewDidAppear 中打印它。
- 如何在
ratingLabel
和rateButton
下的距离中心添加bestChoiceImage
? - 为什么,当我使用
print(anysubview.center.x)
时它 = 0.0,但在 Simulator 中一切都留在原位?
/activate inside viewWillappear
let viewHeight = self.view.frame.height
let viewWidth = self.view.frame.width
NSLayoutConstraint.activate([
reebokClassic.topAnchor.constraint(equalTo: self.view.topAnchor, constant: viewHeight/12),
reebokClassic.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
modelName.topAnchor.constraint(equalTo: reebokClassic.bottomAnchor, constant: viewHeight/100),
modelName.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
sneakersImage.topAnchor.constraint(equalTo: modelName.bottomAnchor, constant: viewHeight/40),
sneakersImage.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
sneakersImage.widthAnchor.constraint(equalToConstant: viewWidth * 0.8),
sneakersImage.heightAnchor.constraint(equalToConstant: viewWidth * 0.8),
segmentedController.widthAnchor.constraint(equalToConstant: viewWidth),
segmentedController.topAnchor.constraint(equalTo: sneakersImage.bottomAnchor, constant: viewHeight/80),
segmentedController.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
segmentedController.heightAnchor.constraint(equalToConstant: viewHeight/23),
lastTimeWeared.topAnchor.constraint(equalTo: segmentedController.bottomAnchor, constant: viewHeight/40),
lastTimeWeared.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: viewHeight/100),
lastTimeWeared.widthAnchor.constraint(equalToConstant: viewWidth/3),
ratingLabel.topAnchor.constraint(equalTo: segmentedController.bottomAnchor, constant: viewHeight/40),
ratingLabel.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -viewHeight/50),
ratingLabel.widthAnchor.constraint(equalToConstant: viewWidth/3),
slipOnButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -viewHeight/20),
slipOnButton.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -viewWidth/20),
slipOnButton.widthAnchor.constraint(equalToConstant: viewWidth/5),
slipOnButton.heightAnchor.constraint(equalToConstant: viewHeight/20),
rateButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -viewHeight/20),
rateButton.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: viewWidth/20),
rateButton.widthAnchor.constraint(equalToConstant: viewWidth/5),
rateButton.heightAnchor.constraint(equalToConstant: viewHeight/20),
bestChoiceImage.widthAnchor.constraint(equalToConstant: viewWidth/3),
bestChoiceImage.heightAnchor.constraint(equalToConstant: viewWidth/3),
bestChoiceImage.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
bestChoiceImage.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant:
-(**rateButton.center.y - ratingLabel.center.y - bestChoiceImage.frame.height/2**))
])
将 ratingLabel 和 rateButton 放在容器视图(例如堆栈视图)中,并在 bestChoiceImage 和该容器视图之间进行约束。
您可能在自动布局引擎实际完成工作之前打印它。例如,尝试在 viewDidAppear 中打印它。