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 单元中的项目设置布局约束

Xcode 10 beta SnapKit 约束类型错误

使用 SnapKit 对 UIView 进行约束但啥也不显示

Expanding Collection - Swift

Swift 控件约束之 SnapKit