Ios 无法使UILabel显示在UIView顶部

Ios 无法使UILabel显示在UIView顶部,ios,swift,uilabel,constraints,Ios,Swift,Uilabel,Constraints,我正在尝试创建一个自定义视图,该视图由UIView顶部的UILabel组成。其想法是将其作为一个小的弹出消息,标签的大小与视图的大小基本相同。但是,每当我尝试将此自定义视图(由屏幕截图中屏幕底部的小灰色框表示)添加到另一个视图时,我只能显示UIView/深灰色背景,而不能显示标签。有人能告诉我正确的方向吗?我有点困惑,为什么下面的代码不起作用?谢谢 编辑:我可能应该指出,如果我用CGRect(x:0,y:0,高度:100,宽度:50)替换.zero,我可以让标签以某种形式显示,但我会认为将其设置

我正在尝试创建一个自定义视图,该视图由UIView顶部的UILabel组成。其想法是将其作为一个小的弹出消息,标签的大小与视图的大小基本相同。但是,每当我尝试将此自定义视图(由屏幕截图中屏幕底部的小灰色框表示)添加到另一个视图时,我只能显示UIView/深灰色背景,而不能显示标签。有人能告诉我正确的方向吗?我有点困惑,为什么下面的代码不起作用?谢谢

编辑:我可能应该指出,如果我用CGRect(x:0,y:0,高度:100,宽度:50)替换.zero,我可以让标签以某种形式显示,但我会认为将其设置为.zero会很好,因为有限制


如果您想将消息显示为弹出窗口,为什么不将弹出窗口写入UIViewController扩展并在控制器中调用它

extension UIViewController {
     func showPopup(text: String) {

          let popupView: UIView = {
              let view = UIView()
              view.backgroundColor = .darkGray
              view.translatesAutoresizingMaskIntoConstraints = false
              return view
          }()

          let textLabel: UILabel = {
              let label = UILabel()
              label.text = self.text
              label.font = UIFont(name: "Times New Roman", size: 14.0)
              label.textColor = UIColor.white
              label.translatesAutoresizingMaskIntoConstraints = false
              return label
          }()
          self.view.addSubview(popupView) 
          // add anchors to your popupView relative to your viewController here

          self.popupView.addSubView(textLabel)
          self.textLabel.topAnchor.constraint(equalTo: popupView.topAnchor).isActive = true
          self.textLabel.bottomAnchor.constraint(equalTo: popupView.bottomAnchor).isActive = true
          self.textLabel.leftAnchor.constraint(equalTo: popupView.leftAnchor).isActive = true
          self.textLabel.rightAnchor.constraint(equalTo: popupView.rightAnchor).isActive = true
    }
}
并调用视图控制器中的函数:

self.showPopup(text: "My popup message")

初始化后将文本设置为标签

self.label = UILabel(frame: .zero)
self.labelText = text
您正在初始化文本之前设置文本

问题: 我对你的脚本做了一些测试,从头重写,发现了你的错误

问题是,您没有导入字体“Times New Roman”。为此,您需要右键单击黄色文件夹,按Command+Shift+G,然后键入:

/System/Library/Fonts/
然后,向下滚动,直到看到一个字体写着“Times”,然后将其上传到Swift中

我还建议将“Times New Roman”部分改为“Times”

还是不工作? 如果它仍然不起作用,那就是代码有问题。我能从头重写你的剧本,它对我很有效。如果仍不起作用,请尝试使用以下代码:

import UIKit
class ViewController: UIViewController {
    var popupLabel = UILabel()
    var popupBox = UIView()
    override func viewDidLoad() {
        view.addSubview(popupBox)
        popupBox.addSubview(popupLabel)
        popupBox.isHidden = true
        popupLabel.isHidden = true
        showPopup(CGPoint(x: 250 /* Change X Position */, y: 125 /* Change Y Position */), CGSize(width: 250 /* Change Width */, height: 100 /* Change Height */), "Blah" /* Change displayed text */)
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

func showPopup(_ rectPosition: CGPoint, _ rectSize: CGSize, _ popupDisplay: String) {
    popupBox.isHidden = false
    popupLabel.isHidden = false
    popupLabel.textColor = UIColor.white
    popupLabel.font = UIFont(name: "Times New Roman", size: 14.0)
    self.popupLabel.text = popupDisplay
    popupBox.frame.size = rectSize
    popupBox.center = rectPosition
    popupBox.backgroundColor = UIColor.darkGray
    popupLabel.frame.size = popupBox.frame.size
    popupLabel.textAlignment = .center
    popupLabel.center = popupBox.center
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

如果你要使用这个代码,把它放在<代码> VIEW Controller中。SWIFT < /Cord>文件,并考虑删除其他类。

< P>对不起,伙计们,我是个白痴。我已经盯着这个代码看了几个小时,弄不明白为什么事情不起作用。我最终意识到我的代码中有一个输入错误。纠正打字错误似乎成功了。谢谢大家的帮助

原件:

self.translatesAutoresizingMaskIntoConstraints
固定的:

self.label.translatesAutoresizingMaskIntoConstraints

使用视图控制器,而不是UIView子类和演示样式overcurrentcontextI已回滚您的编辑。如果你解决了你的问题,张贴一个解释如何解决的答案;这个问题应该只是一个问题。(接受你自己的答案很好。)添加了一个答案。看来我得等两天才能接受我自己的答案,所以我会确保这样做。谢谢leedex。我将尝试重构成这个。在这个例子中我很幸运,因为这并没有导致错误,但我编辑了代码以反映您的观点。谢谢
self.label.translatesAutoresizingMaskIntoConstraints