#ios #swift #xcode
#iOS #swift #xcode
Вопрос:
Я хотел бы сделать кнопку ближе к нижней части экрана. Если для устройства ex. пользователя — iPhone 5S, 10 баллов, а для iPhone 11 — 20 баллов и т. Д. Я не мог найти, как сделать это так
constraint = height / constant
таким образом, чем выше устройство, тем выше будет кнопка. Как я могу добиться этого программно или из пользовательского интерфейса Xcode?
Ответ №1:
Может быть, вы можете получить высоту окон ваших устройств и умножить ее на коэффициент?
var button : UIButton = {
let b = UIButton()
b.translatesAutoresizingMaskIntoConstraints = false
b.backgroundColor = .red
return b
}()
override func viewDidLoad() {
super.viewDidLoad()
let screenSize = UIScreen.main.bounds
let height = screenSize.height
let ratio:CGFloat = 0.05 // you can change this
let bottomConstraint = height*ratio
print(bottomConstraint) // this would print 44.80 on the iPhone 11 and 33.35 on the iPhone 8
self.view.addSubview(button)
button.heightAnchor.constraint(equalToConstant: 50).isActive = true
button.widthAnchor.constraint(equalToConstant: 200).isActive = true
button.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
// then you applied the variable constraint
button.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: -bottomConstraint).isActive = true
}
Ответ №2:
В вашем viewDidLoad
, получите ссылку на представление для настройки как так:
class ViewController: UIViewController {
var targetView: UIView! // or @IBOutlet if you created it from the Interface Builder (IB)
private let ratio: CGFloat = 0.05
override func viewDidLoad() {
super.viewDidLoad()
// The following line enables you to programmatically set constraint using AutoLayout
targetView.translatesAutoresizingMaskIntoConstraints = false
// Get the height of the screen
let height = UIScreen.main.bounds.height
targetView.bottomAnchor.constraint(
equalTo: view.safeAreaLayoutGuide.bottomAnchor,
constant: -height * ratio
).isActive = true
// Set the other necessary constraints
}