如何使用 SnapKit 在 ScrollView 中居中按钮数组

Posted

技术标签:

【中文标题】如何使用 SnapKit 在 ScrollView 中居中按钮数组【英文标题】:How do i center array of button in ScrollView using SnapKit 【发布时间】:2017-03-07 08:35:34 【问题描述】:

如何使用 SnapKit 在 ScrollView 中垂直居中下方的按钮数组。

for i in 0..<3 

        itemCount = i

        let aButton = UIButton(type: .custom)

        aButton.frame = CGRect(x: xCoord, y: yCoord, width: buttonWidth, height: buttonHeight)
        aButton.backgroundColor = UIColor.blue
        aButton.layer.cornerRadius = aButton.frame.size.width / 2
        aButton.clipsToBounds = true

        xCoord += buttonWidth + gapBetweenButtons

        aScrollView.addSubview(aButton)

        aButton.snp.makeConstraints  (make) in
            make.center.equalTo(aScrollView)
        
    

【问题讨论】:

【参考方案1】:

实现等距按钮数组的最佳方法是使用 UIStackView。这应该有效:

let buttonStackView = UIStackView()
buttonStackView.axis = .vertical
buttonStackView.distribution = .equalSpacing
for i in 0..<3 
    itemCount = i

    let aButton = UIButton(type: .custom)

    aButton.frame = CGRect(x: xCoord, y: yCoord, width: buttonWidth, height: buttonHeight)
    aButton.backgroundColor = UIColor.blue
    aButton.layer.cornerRadius = aButton.frame.size.width / 2
    aButton.clipsToBounds = true

    xCoord += buttonWidth + gapBetweenButtons

    buttonStackView.addArrangedSubview(aButton)


aScrollView.addSubview(buttonStackView)
buttonStackView.snp.makeConstraints  (make) in
    make.centerY.equalToSuperview()

【讨论】:

更改为水平并得到这个imgur.com/a/q29pB,我猜 gapBetweenButtons 与 stackview.distribution 冲突 @mclovin 设置 stackview.spacing = gapBetweenButtons

以上是关于如何使用 SnapKit 在 ScrollView 中居中按钮数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SnapKit 中按比例设置边缘偏移与超级视图高度的大小

Snapkit 和 TableView 中的多个自定义单元格

scrollView 中的 webView 不能滚动?

如何在 Objc 项目中使用 SnapKit?

如何使用 SnapKit 在 iOS 中使用纵横比约束?

如何在 Swift 中使用 SnapKit 使 UIView 具有相等的宽度和高度?