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