Как я могу использовать .scaleAspectFit и .top, чтобы правильно выровнять мое изображение внутри UIImageView? - PullRequest
1 голос
/ 24 июня 2019

Я не могу найти способ выровнять свое изображение по верху этого UIImageView, в то же время используя .scaleAspectFit. Я выделил ImageView синим цветом, чтобы вы могли видеть, что происходит. Как вы можете видеть, изображение центрируется по вертикали, но мне нужно, чтобы оно было зафиксировано сверху. Есть ли способ, которым я могу установить как .scaleAspectFit, так и .top внутри этого UIStackView?

class SwipedPageCell: UICollectionViewCell  {

override init(frame: CGRect) {
    super.init(frame: frame)

    setupViews(distribution: .fillProportionally, alignment: .fill, spacing: 0)

    backgroundColor = UIColor.backgroundGrey()

}

let imageScreenshot: UIImageView = {
   let iv = UIImageView()
    iv.image = UIImage(named: "tv-screenshot")
    iv.contentMode = .scaleAspectFit
    iv.clipsToBounds = true
    iv.translatesAutoresizingMaskIntoConstraints = false

    iv.backgroundColor = .blue
    return iv
}()

let logoText: UILabel = {
    let label = UILabel()
    label.attributedText = NSAttributedString(string: "whatsong", attributes: [
        NSAttributedString.Key.kern: -1.0
        ])
    label.font = UIFont(name: "FatFrank", size: 40)
    label.textColor = UIColor(red: 41/255, green: 45/255, blue: 51/255, alpha: 1)
    label.textAlignment = .center
    return label
}()

let subheading: UILabel = {
    let label = UILabel()
    label.attributedText = NSAttributedString(string: "Discover music from the latest movies and television shows", attributes: [
        NSAttributedString.Key.kern: -0.6
        ])
    label.font = UIFont(name: "Montserrat-SemiBold", size: 16)
    label.textColor = UIColor(red: 41/255, green: 45/255, blue: 51/255, alpha: 1)
    label.numberOfLines = 0
    label.textAlignment = .center
    return label
}()

func setupViews(distribution: UIStackView.Distribution, alignment: UIStackView.Alignment, spacing: CGFloat)   {

    let verticalStackView = VerticalStackView(arrangedSubviews: [imageScreenshot, logoText, subheading])
    verticalStackView.spacing = spacing
    verticalStackView.distribution = distribution
    verticalStackView.alignment = alignment

    addSubview(verticalStackView)

    verticalStackView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 0, left: 20, bottom: 10, right: 20))

}
}
...