StandardListItemWithImage assembled.

This commit is contained in:
Kevin G Christiano 2019-06-26 14:49:01 -04:00
parent 569ae1481c
commit dbeb5156c5

View File

@ -20,6 +20,14 @@ import UIKit
let imageloader = MFLoadImageView()
let leftContainer = ViewConstrainingView.empty()
//------------------------------------------------------
// MARK: - Constraints
//------------------------------------------------------
var imageWidthConstraint: NSLayoutConstraint?
var imageHeightConstraint: NSLayoutConstraint?
var buttonTopConstraint: NSLayoutConstraint?
//------------------------------------------------------
// MARK: - Initialization
//------------------------------------------------------
@ -52,57 +60,59 @@ import UIKit
button.setAsSecondaryCustom()
imageloader.imageView.contentMode = .scaleAspectFit
addSubview(leftContainer)
addSubview(imageloader)
leftContainer.addSubview(title)
leftContainer.addSubview(message)
leftContainer.addSubview(button)
addSubview(imageloader)
imageloader.imageView.contentMode = .scaleAspectFit
imageloader.translatesAutoresizingMaskIntoConstraints = false
button.translatesAutoresizingMaskIntoConstraints = false
leftContainer.topAnchor.constraint(equalTo: topAnchor).isActive = true
leftContainer.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor).isActive = true
bottomAnchor.constraint(greaterThanOrEqualTo: leftContainer.bottomAnchor).isActive = true
let leftContainerBottom = leftContainer.bottomAnchor.constraint(equalTo: bottomAnchor)
leftContainerBottom.priority = UILayoutPriority(249)
leftContainerBottom.isActive = true
bottomAnchor.constraint(greaterThanOrEqualTo: leftContainer.bottomAnchor).isActive = true
title.topAnchor.constraint(equalTo: topAnchor).isActive = true
title.topAnchor.constraint(equalTo: leftContainer.topAnchor).isActive = true
title.leadingAnchor.constraint(equalTo: leftContainer.leadingAnchor).isActive = true
title.trailingAnchor.constraint(equalTo: leftContainer.trailingAnchor).isActive = true
title.widthAnchor.constraint(equalTo: leftContainer.widthAnchor).isActive = true
message.topAnchor.constraint(equalTo: title.bottomAnchor, constant: 6).isActive = true
message.topAnchor.constraint(equalTo: title.bottomAnchor, constant: PaddingOne).isActive = true
message.leadingAnchor.constraint(equalTo: leftContainer.leadingAnchor).isActive = true
message.trailingAnchor.constraint(equalTo: leftContainer.trailingAnchor).isActive = true
message.widthAnchor.constraint(equalTo: leftContainer.widthAnchor).isActive = true
buttonTopConstraint = button.topAnchor.constraint(equalTo: message.bottomAnchor, constant: PaddingTwo)
buttonTopConstraint?.isActive = true
button.leadingAnchor.constraint(equalTo: leftContainer.leadingAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: leftContainer.bottomAnchor).isActive = true
leftContainer.trailingAnchor.constraint(greaterThanOrEqualTo: button.trailingAnchor).isActive = true
imageloader.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
layoutMarginsGuide.trailingAnchor.constraint(equalTo: imageloader.trailingAnchor).isActive = true
imageloader.topAnchor.constraint(greaterThanOrEqualTo: topAnchor).isActive = true
imageloader.leadingAnchor.constraint(equalTo: leftContainer.trailingAnchor, constant: 16).isActive = true
imageHeightConstraint = imageloader.heightAnchor.constraint(equalToConstant: 0)
imageHeightConstraint?.isActive = true
imageWidthConstraint = imageloader.widthAnchor.constraint(equalToConstant: 0)
imageWidthConstraint?.isActive = true
bottomAnchor.constraint(greaterThanOrEqualTo: imageloader.bottomAnchor).isActive = true
let imageloaderBottom = imageloader.bottomAnchor.constraint(equalTo: bottomAnchor)
imageloaderBottom.priority = UILayoutPriority(249)
imageloaderBottom.isActive = true
button.topAnchor.constraint(equalTo: message.bottomAnchor, constant: 12).isActive = true
button.leadingAnchor.constraint(equalTo: leftContainer.leadingAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: leftContainer.bottomAnchor).isActive = true
title.setContentHuggingPriority(UILayoutPriority(rawValue: 901), for: .horizontal)
message.setContentHuggingPriority(UILayoutPriority(rawValue: 902), for: .horizontal)
title.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 901), for: .horizontal)
message.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 902), for: .horizontal)
title.setContentHuggingPriority(.required, for: .vertical)
message.setContentHuggingPriority(.required, for: .vertical)
title.setContentCompressionResistancePriority(.required, for: .vertical)
message.setContentCompressionResistancePriority(.required, for: .vertical)
imageloader.imageView.setContentCompressionResistancePriority(.required, for: .vertical)
}
override open func updateView(_ size: CGFloat) {
@ -113,6 +123,8 @@ import UIKit
button.updateView(size)
imageloader.updateView(size)
leftContainer.updateView(size)
buttonTopConstraint?.constant = message.hasText ? PaddingTwo : PaddingOne
}
override open func reset() {
@ -121,6 +133,7 @@ import UIKit
title.text = ""
message.text = ""
imageloader.imageView.image = nil
imageWidthConstraint?.constant = 0
backgroundColor = nil
}
@ -135,10 +148,16 @@ import UIKit
imageloader.setWithJSON(dictionary.optionalDictionaryForKey("imageView"), delegateObject: delegateObject as? MVMCoreUIDelegateObject, additionalData: additionalData)
if let imageJSON = dictionary.optionalDictionaryForKey("imageView") {
let width = CGFloat(imageJSON.floatForKey("width"))
let height = CGFloat(imageJSON.floatForKey("height"))
imageloader.loadImage(withName: imageJSON.optionalStringForKey("image"),
format: imageJSON.optionalStringForKey("imageFormat"),
width: imageJSON.int32ForKey("imageWidth") as NSNumber,
height: imageJSON.int32ForKey("imageHeight") as NSNumber)
width: width as NSNumber,
height: height as NSNumber)
imageWidthConstraint?.constant = width
imageHeightConstraint?.constant = height
}
if let backgroundColorHex = dictionary[KeyBackgroundColor] as? String {