Swift UIStackView 的使用简单示例

1658310144707.jpg

布局如图中红框内所示样式的一个布局技巧

  • 用户名字是长度可变
  • 浏览数长度可变
  • 本次需求已用户名字控件可拉伸压缩
  • 使用UIStackView 和 UILabel 搭配, 代码如下

首先创建一个容器

/// 容器
    private lazy var stackView = UIStackView().then {
        $0.axis = .horizontal
        $0.alignment = .center
        // 如需要自定义间距, 可使用 
        // open func setCustomSpacing(_ spacing: CGFloat, after arrangedSubview: UIView)
        $0.spacing = 6.px
    }

其中布局代码可简化成

private func setupViews() {

        stackView.snp.makeConstraints {
            $0.left.equalTo(12.px)
            $0.right.equalTo(contentView.snp.right).offset(-12.px)
            $0.bottom.equalTo(-20.px)
            $0.height.equalTo(40.px)
        }

        stackView.addArrangedSubview(avatarImageView)
        stackView.addArrangedSubview(userNameLabel)
        stackView.addArrangedSubview(eyesImageView)
        stackView.addArrangedSubview(browseCountLabel)

        avatarImageView.snp.makeConstraints {
            $0.width.height.equalTo(40.px)
        }
    }

用户名字 label 可这样初始化

private lazy var userNameLabel = UILabel().then {
        $0.font = .pingfang(.regular, pixels: 24)
        $0.textColor = UIColor(0x666666)
        $0.textAlignment = .left
        $0.isUserInteractionEnabled = true
        $0.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
        $0.setContentHuggingPriority(UILayoutPriority(200), for: .horizontal)
        $0.onGesture(.tap) { [weak self] _ in
           
        }
    }

这样就可完成本次的简单布局, 由此可以延伸出, 多子模块布局, 竖直方向布局, 还可以使用 StackView 和 StackView 的"嵌套".

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值