Перемещение меток на внешнем экране
Я хочу переместить свои ярлыки на внешний дисплей. (например, displayRunsLabel вверху и по центру или, возможно, 40px справа и сверху)
У меня есть мои ярлыки на экране. В настоящее время я использую выравнивание текста.
Какой лучший способ сделать это?
Вот мой внешний дисплей:
ExternalDisplayScreenshot
Вот код:
// CUSTOMISE VIEW
secondScreenView.backgroundColor = UIColor.black
displayWicketLabel.textAlignment = NSTextAlignment.left
displayWicketLabel.font = UIFont(name: "Arial-BoldMT", size: 200.0)
displayWicketLabel.textColor = UIColor.white
displayWicketLabel.frame = secondScreenView.bounds
secondScreenView.addSubview(displayWicketLabel)
displayRunsLabel.textAlignment = NSTextAlignment.center
displayRunsLabel.font = UIFont(name: "Arial-BoldMT", size: 200.0)
displayRunsLabel.textColor = UIColor.white
displayRunsLabel.frame = secondScreenView.bounds
secondScreenView.addSubview(displayRunsLabel)
displayOversLabel.textAlignment = NSTextAlignment.right
displayOversLabel.font = UIFont(name: "Arial-BoldMT", size: 200.0)
displayOversLabel.textColor = UIColor.white
displayOversLabel.frame = secondScreenView.bounds
secondScreenView.addSubview(displayOversLabel)
}
1 ответ
Положение метки или любого другого UIView является origin
его frame
, который представляет собой CGPoint, представляющий его верхний левый угол.
Итак, вы сейчас говорите:
displayWicketLabel.frame = secondScreenView.bounds
displayRunsLabel.frame = secondScreenView.bounds
displayOversLabel.frame = secondScreenView.bounds
Ну, это довольно глупо, потому что вы дали всем трем меткам один и тот же кадр! Таким образом, они накладываются друг на друга, и (как вы правильно говорите) вы можете читать их, только давая им различные выравнивания текста.
Вместо этого дайте им каждый отдельный кадр - тот, который помещает метку туда, где вы хотите. Например:
displayWicketLabel.sizeToFit()
displayWicketLabel.frame.origin = CGPoint(x:30, y:20) // or whatever
displayRunsLabel.sizeToFit()
displayRunsLabel.frame.origin = CGPoint(x:30, y:100) // or whatever
displayOversLabel.sizeToFit()
displayOversLabel.frame.origin = CGPoint(x:30, y:200) // or whatever
После всего сказанного ясно, что в коде, который я только что показал вам, есть один недостаток: мы произвольно жестко закодировали позиции, не принимая во внимание размер окна (внешний дисплей). По этой причине гораздо лучше будет узнать об автоматической разметке, которая позволит вам автоматически размещать три метки в удобных положениях в зависимости от размера окна.