Snapkit centerY 约束将项目居中于中心 Y 轴上方
Posted
技术标签:
【中文标题】Snapkit centerY 约束将项目居中于中心 Y 轴上方【英文标题】:Snapkit centerY constraint centers item above the center Y axis 【发布时间】:2019-04-25 19:04:20 【问题描述】:我正在尝试制作自定义 UICollectionView 单元格类。单元格由内容视图和标签组成。我希望标签位于视图的中心,水平和垂直,但标签放置在内容视图的中心 y 轴上方。
我已确保已设置约束,未设置其他约束,并且该问题会影响内容视图中的所有视图(我添加了另一个视图并将其中心 Y 轴设置为测试,这也没用)。我还将内容视图和标签的背景颜色设置为对比色,并确认标签没有位于内容视图的中心 y 锚点上。
这是我设置约束的方式:
label.snp.makeConstraintsmake in
make.centerX.centerY.equalToSuperview()
这是我得到的。显然标签没有垂直居中。你可以看到我作为测试添加的蓝色 UIView 也没有垂直居中。
【问题讨论】:
【参考方案1】:我曾经以这种方式以编程方式添加我的约束
self.view.addSubview(image)
image.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
image.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
image.heightAnchor.constraint(equalToConstant: 30).isActive = true
image.widthAnchor.constraint(equalToConstant: 30).isActive = true
我的形象就是这样声明的
let image: UIImageView =
let theImageView = UIImageView()
theImageView.image = UIImage(named: "ico_return")
theImageView.translatesAutoresizingMaskIntoConstraints = false
return theImageView
()
希望对你有帮助
【讨论】:
我特别想使用 SnapKit,所以 NSLayoutConstraints 对我不起作用。【参考方案2】:你能试试下面的代码吗?
class FilterCollectionViewCell: UICollectionViewCell
let labelTemp = UILabel()
override func awakeFromNib()
labelTemp.backgroundColor = .white
labelTemp.textColor = .black
labelTemp.text = "testing"
self.contentView.addSubview(labelTemp)
labelTemp.snp.makeConstraints (make) in
make.centerX.centerY.equalTo(self.contentView)
【讨论】:
【参考方案3】:快速简单:
myLabel.snp.makeConstraints (make) in
make.center.equalTo(self.topView.snp.center)
【讨论】:
以上是关于Snapkit centerY 约束将项目居中于中心 Y 轴上方的主要内容,如果未能解决你的问题,请参考以下文章
自动布局我可以将 CenterY 与顶部和底部约束结合起来吗?
SnapKit:如何以编程方式为 TableView 单元中的项目设置布局约束