使用AutoLayout SnapKit创建具有固定长宽比的视图


最近,iOS View是在不使用Interface Builder的情况下通过代码生成的。
当时,我正在使用称为SnapKit的OSS,但我有点担心如何生成具有固定长宽比的View,因此我将其保留为Tips。

对于Interface Builder

如果您从

添加新约束中选中"宽高比",则可以。

スクリーンショット 2018-02-19 1.13.45.png

对于SnapKit

长宽比根据宽度固定

1
2
3
4
5
6
aView.snp.makeConstraints { make in
    let width = 100
    let ratio = 0.5
    make.width.equalTo(width)
    make.height.equalTo(aView.snp.width).multipliedBy(ratio)
}

好吧,在声明像这样固定View的人(这次宽度)与以相等于固定相依的人(这次的高度)相同之后,像往常一样设置它,然后乘以通过增加比率是可能的。

使ImageView适合图像

通过这种想法,您可以在使用AutoLayout保持图像的纵横比的同时,将ImageView设置为良好的感觉。

使ImageView适合图像

1
2
3
4
5
6
7
8
imageView.snp.makeConstraints { make in
    let ratio: CGFloat = {
        let size = imageView.image!.size
        return size.height / size.width
    }()
    make.width.equalToSuperview().multipliedBy(0.8)
    make.height.equalTo(imageView.snp.width).multipliedBy(ratio)
}

现在,您可以将ImageView的宽度设置为父视图的宽度的0.8倍,并使ImageView适应图像的长宽比。