Fix sizing issue in QRCodeView.
onstraints were set up in a way that would make QRCodeView try to set itself to 40 dp + whatever margins are provided at init.
This commit is contained in:
parent
69a368c11b
commit
b02a60f63d
@ -24,35 +24,69 @@ class QRCodeView: UIView {
|
||||
|
||||
super.init(frame: .zero)
|
||||
|
||||
// MARK: View properties
|
||||
overrideUserInterfaceStyle = .light
|
||||
backgroundColor = .Signal.background
|
||||
directionalLayoutMargins = .init(margin: contentInset)
|
||||
|
||||
backgroundColor = .white
|
||||
layoutMargins = UIEdgeInsets(margin: contentInset)
|
||||
layer.cornerRadius = cornerRadius
|
||||
layer.borderWidth = borderWidth
|
||||
layer.borderColor = qrCodeTintColor.paddingBorder.cgColor
|
||||
|
||||
//
|
||||
// Spinner
|
||||
//
|
||||
loadingSpinner.style = .large
|
||||
loadingSpinner.color = Theme.lightThemePrimaryColor
|
||||
loadingSpinner.color = .Signal.label
|
||||
loadingSpinner.hidesWhenStopped = true
|
||||
addSubview(loadingSpinner)
|
||||
loadingSpinner.translatesAutoresizingMaskIntoConstraints = false
|
||||
NSLayoutConstraint.activate([
|
||||
loadingSpinner.widthAnchor.constraint(equalToConstant: 40),
|
||||
loadingSpinner.heightAnchor.constraint(equalTo: widthAnchor),
|
||||
|
||||
// Make sure spinner is within QRCodeView's layout margins.
|
||||
loadingSpinner.topAnchor.constraint(greaterThanOrEqualTo: layoutMarginsGuide.topAnchor),
|
||||
loadingSpinner.centerYAnchor.constraint(equalTo: layoutMarginsGuide.centerYAnchor),
|
||||
|
||||
// Centers spinner in `QRCodeView`.
|
||||
loadingSpinner.leadingAnchor.constraint(greaterThanOrEqualTo: layoutMarginsGuide.leadingAnchor),
|
||||
loadingSpinner.centerXAnchor.constraint(equalTo: layoutMarginsGuide.centerXAnchor),
|
||||
])
|
||||
|
||||
//
|
||||
// QR Code image
|
||||
//
|
||||
// Don't antialias QR codes
|
||||
qrCodeImageView.layer.magnificationFilter = .nearest
|
||||
qrCodeImageView.layer.minificationFilter = .nearest
|
||||
|
||||
// MARK: Layout
|
||||
|
||||
addSubview(loadingSpinner)
|
||||
loadingSpinner.autoSetDimensions(to: .square(40))
|
||||
loadingSpinner.autoPinEdgesToSuperviewMargins()
|
||||
|
||||
addSubview(qrCodeImageView)
|
||||
qrCodeImageView.autoPinEdgesToSuperviewMargins()
|
||||
qrCodeImageView.contentMode = .scaleAspectFit
|
||||
addSubview(qrCodeImageView)
|
||||
qrCodeImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
// Constrain image to QRCodeView's layout margins.
|
||||
NSLayoutConstraint.activate([
|
||||
qrCodeImageView.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor),
|
||||
qrCodeImageView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
|
||||
qrCodeImageView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor),
|
||||
qrCodeImageView.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor),
|
||||
])
|
||||
|
||||
//
|
||||
// Error image
|
||||
//
|
||||
addSubview(errorImageView)
|
||||
errorImageView.autoSetDimensions(to: .square(40))
|
||||
errorImageView.autoCenterInSuperviewMargins()
|
||||
errorImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
NSLayoutConstraint.activate([
|
||||
errorImageView.widthAnchor.constraint(equalToConstant: 40),
|
||||
errorImageView.heightAnchor.constraint(equalTo: widthAnchor),
|
||||
|
||||
// Make sure `errorImageView` is within QRCodeView's layout margins.
|
||||
errorImageView.topAnchor.constraint(greaterThanOrEqualTo: layoutMarginsGuide.topAnchor),
|
||||
errorImageView.centerYAnchor.constraint(equalTo: layoutMarginsGuide.centerYAnchor),
|
||||
|
||||
// Centers `errorImageView` in `QRCodeView`.
|
||||
errorImageView.leadingAnchor.constraint(greaterThanOrEqualTo: layoutMarginsGuide.leadingAnchor),
|
||||
errorImageView.centerXAnchor.constraint(equalTo: layoutMarginsGuide.centerXAnchor),
|
||||
])
|
||||
|
||||
setLoading()
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user