使用 NSLayout 设置 UILabel 的 X 和 Y 值
Posted
技术标签:
【中文标题】使用 NSLayout 设置 UILabel 的 X 和 Y 值【英文标题】:Set X and Y values of UILabel using NSLayout 【发布时间】:2017-08-21 23:27:21 【问题描述】:我正在添加一个 UI 标签,并且正在尝试编程 UI 代码。我使用以下代码设置了我的标签:
let titleLabel: UILabel =
let lb = UILabel()
lb.translatesAutoresizingMaskIntoConstraints = false
lb.textAlignment = .center
lb.numberOfLines = 1
lb.textColor = UIColor.black
lb.font=UIFont.systemFont(ofSize: 22)
lb.backgroundColor = UIColor.white
return lb
然后使用此代码添加约束:
func setupTitleLabel()
titleLabel.translatesAutoresizingMaskIntoConstraints = false
titleLabel.heightAnchor.constraint(equalToConstant: 100).isActive = true
titleLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true
titleLabel.centerXAnchor.constraint(equalTo: titleLabel.superview!.centerXAnchor).isActive = true
titleLabel.centerYAnchor.constraint(equalTo: titleLabel.superview!.centerYAnchor).isActive = true
我稍后会调用这个函数。但是,我不确定如何更改为 X 和 Y 值。目前,它设置为 X 和 Y 的页面中间,但我如何将它移到顶部。
【问题讨论】:
使用这两个titleLabel.superview!.leadingAnchor
, titleLabel.superview!.topAnchor
而不是 titleLabel.superview.centerXAnchor
和 titleLabel.superview!.centerYAnchor
【参考方案1】:
正如我在评论中所说,如果您需要将标签固定到标签超级视图的顶部,则您错误地使用了 titleLabel.superview!.centerYAnchor
,您需要改用 titleLabel.superview!.topAnchor
替换这个
titleLabel.centerYAnchor.constraint(equalTo: titleLabel.superview!.centerYAnchor).isActive = true
由此
titleLabel.centerYAnchor.constraint(equalTo: titleLabel.superview!.topAnchor).isActive = true
【讨论】:
我正在尝试添加文本以查看标签的位置,并且 lbl.text = "string" 未显示文本:/ 您确定您的 UILabel 已添加到您想要的视图中吗?我在任何地方都看不到self.view.addSubView(self.titleLabel)
@user8480321
然后将你的 UILabel 添加到正确的 UIView,你必须有你想要的结果@user8480321【参考方案2】:
我理解的情况是标签在centerX和centerY,你希望它以后在superView的顶部。如果是这样,我认为你可以使用var centerYAnchor: NSLayoutConstraint?
centerYAnchor = titleLabel.centerYAnchor.constraint(equalTo: titleLabel.superview!.centerYAnchor)
centerYAnchor.isActive = true
而当你以后想改变顶部的标签时,你可以设置centerYAnchor.isActive = false
并设置标签的topAnchor。
titleLabel.topAnchor.constraint(equalTo: titleLabel.superview!.topAnchor).isActive = true
【讨论】:
我只是想给页面添加一个标题。我正在尝试在页面顶部设置 Y 值,但它似乎不起作用。使用您的方法,它只会从中间略微增加 Y 值 我觉得centerXAnchor,heightAnchor,widthAnchor和topAnchor,4个anchor就足够让label在你想要的位置了。以上是关于使用 NSLayout 设置 UILabel 的 X 和 Y 值的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 带有 SpriteNodes 和 UILabel 的 NSLayout 表
使用 UIAppearance 代理设置 UILabel 样式