Files
comaps/iphone/Maps/UI/PlacePage/Components/PlacePageHeader/CircleImageButton.swift
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

53 lines
1.7 KiB
Swift

final class CircleImageButton: UIButton {
private let circleImageView = UIImageView()
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
@available(*, unavailable)
required init?(coder: NSCoder) {
super.init(coder: coder)
setupView()
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if #available(iOS 13.0, *), traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
circleImageView.applyTheme()
}
}
private func setupView() {
backgroundColor = .clear
circleImageView.setStyle(.ppHeaderCircleIcon)
circleImageView.contentMode = .scaleAspectFill
circleImageView.clipsToBounds = true
circleImageView.isUserInteractionEnabled = false
circleImageView.layer.masksToBounds = true
circleImageView.translatesAutoresizingMaskIntoConstraints = false
addSubview(circleImageView)
let aspectRatioConstraint = circleImageView.widthAnchor.constraint(equalTo: circleImageView.heightAnchor)
aspectRatioConstraint.priority = .defaultHigh
NSLayoutConstraint.activate([
circleImageView.centerXAnchor.constraint(equalTo: centerXAnchor),
circleImageView.centerYAnchor.constraint(equalTo: centerYAnchor),
circleImageView.widthAnchor.constraint(lessThanOrEqualTo: widthAnchor),
circleImageView.heightAnchor.constraint(lessThanOrEqualTo: heightAnchor),
aspectRatioConstraint
])
}
override func layoutSubviews() {
super.layoutSubviews()
circleImageView.layer.cornerRadius = circleImageView.bounds.width / 2.0
}
func setImage(_ image: UIImage?) {
circleImageView.image = image
}
}