0

我想将标签移动到外部显示器上的任何位置。(例如,displayRunsLabel 位于顶部并居中,或者可能距离右侧和顶部 40px)

我的标签显示在屏幕上。我目前正在使用文本对齐。

最好的方法是什么?

这是我的外接显示器:

外显屏幕截图

截屏

这是代码:

 // 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)
    }
4

1 回答 1

0

标签或任何其他 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

现在,说了这么多,我刚刚向您展示的代码中的一个明显缺陷是我们对位置进行了任意硬编码,而没有考虑窗口的大小(外部显示器)。出于这个原因,一个更好的方法是让您了解自动布局,它可以让您根据窗口的大小自动将三个标签放置在合适的位置。

于 2018-12-19T03:31:13.510 回答