Перемещение меток на внешнем экране - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу переместить свои метки куда угодно на моем внешнем дисплее.(например, displayRunsLabel вверху и по центру или, возможно, 40 пикселей справа и сверху)

У меня есть метки, отображаемые на экране.В настоящее время я использую выравнивание текста.

Какой лучший способ сделать это?

Вот мой внешний дисплей:

ExternalDisplayScreenshot

Screen shot

Вот код:

 // 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 Ответ

0 голосов
/ 19 декабря 2018

Позиция метки или любого другого 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

Теперь, сказав все это, явный недостаток кода, который я только что показал вам, заключается в том, что мы жестко закодировали позиции произвольно, без учета размера окна.есть (внешний дисплей).По этой причине для вас будет гораздо лучше узнать об автоматической разметке, которая позволит вам разместить три метки в удобных положениях автоматически в зависимости от размера окна.

...