latest version of ItemDetailView.
This commit is contained in:
parent
c4ad3cc881
commit
6d2220cbbf
@ -18,6 +18,13 @@ import Foundation
|
||||
var message: Label?
|
||||
var detail: Label?
|
||||
|
||||
var titleWidth: NSLayoutConstraint?
|
||||
var messageWidth: NSLayoutConstraint?
|
||||
var detailWidth: NSLayoutConstraint?
|
||||
|
||||
var messageTrail: NSLayoutConstraint?
|
||||
var titleTrail: NSLayoutConstraint?
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Initialization
|
||||
//------------------------------------------------------
|
||||
@ -52,31 +59,99 @@ import Foundation
|
||||
|
||||
override open func updateView(_ size: CGFloat) {
|
||||
super.updateView(size)
|
||||
|
||||
if let titleText = title?.text, let messageText = message?.text, titleText.isEmpty && messageText.isEmpty {
|
||||
detailWidth?.constant = size
|
||||
detail?.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -PaddingTwo).isActive = true
|
||||
return
|
||||
}
|
||||
|
||||
if let detailText = detail?.text, detailText.isEmpty {
|
||||
messageTrail?.isActive = false
|
||||
titleTrail?.isActive = false
|
||||
message?.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
|
||||
title?.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
|
||||
detailWidth?.constant = 0
|
||||
titleWidth?.constant = size
|
||||
messageWidth?.constant = size
|
||||
return
|
||||
}
|
||||
|
||||
if let titleText = title?.text, titleText.isEmpty {
|
||||
messageWidth?.constant = size * 0.6 - PaddingOne
|
||||
detailWidth?.constant = size * 0.2
|
||||
titleWidth?.constant = 0
|
||||
return
|
||||
}
|
||||
|
||||
if let messageText = message?.text, messageText.isEmpty {
|
||||
titleWidth?.constant = size * 0.6 - PaddingOne
|
||||
detailWidth?.constant = size * 0.2
|
||||
messageWidth?.constant = 0
|
||||
return
|
||||
}
|
||||
|
||||
titleWidth?.constant = size * 0.6 - PaddingOne
|
||||
messageWidth?.constant = size * 0.6 - PaddingOne
|
||||
detailWidth?.constant = size * 0.2
|
||||
}
|
||||
|
||||
func defaultState() {
|
||||
|
||||
if title == nil {
|
||||
title = Label.commonLabelB1(false)
|
||||
message = Label.commonLabelB2(false)
|
||||
detail = Label.commonLabelB1(false)
|
||||
if title == nil && message == nil && detail == nil {
|
||||
|
||||
if let title = title, let message = message, let detail = detail {
|
||||
addSubview(title)
|
||||
addSubview(message)
|
||||
addSubview(detail)
|
||||
|
||||
title.textAlignment = .left
|
||||
message.textAlignment = .left
|
||||
detail.textAlignment = .right
|
||||
|
||||
NSLayoutConstraint.constraintPinSubview(title, pinTop: true, topConstant: PaddingTwo, pinBottom: false, bottomConstant: 0, pinLeft: true, leftConstant: 16, pinRight: false, rightConstant: 0)
|
||||
NSLayoutConstraint.constraintPinSubview(message, pinTop: false, topConstant: 0, pinBottom: true, bottomConstant: PaddingTwo, pinLeft: true, leftConstant: 16, pinRight: true, rightConstant: 16)
|
||||
NSLayoutConstraint.constraintPinSubview(detail, pinTop: true, topConstant: PaddingTwo, pinBottom: false, bottomConstant: 0, pinLeft: false, leftConstant: 0, pinRight: true, rightConstant: 16)
|
||||
NSLayoutConstraint(pinFirstView: title, toSecondView: message, withConstant: 0, directionVertical: true)?.isActive = true
|
||||
|
||||
title.trailingAnchor.constraint(lessThanOrEqualTo: detail.leadingAnchor, constant: PaddingOne).isActive = true
|
||||
}
|
||||
let title = Label.commonLabelB1(false)
|
||||
let message = Label.commonLabelB2(false)
|
||||
let detail = Label.commonLabelB1(false)
|
||||
|
||||
self.title = title
|
||||
self.message = message
|
||||
self.detail = detail
|
||||
|
||||
addSubview(title)
|
||||
addSubview(message)
|
||||
addSubview(detail)
|
||||
|
||||
title.textAlignment = .left
|
||||
message.textAlignment = .left
|
||||
detail.textAlignment = .right
|
||||
|
||||
NSLayoutConstraint.constraintPinSubview(title, pinTop: true, topConstant: PaddingTwo, pinBottom: false, bottomConstant: 0, pinLeft: true, leftConstant: 0, pinRight: false, rightConstant: 0)
|
||||
NSLayoutConstraint.constraintPinSubview(message, pinTop: false, topConstant: 0, pinBottom: true, bottomConstant: PaddingTwo, pinLeft: true, leftConstant: 0, pinRight: false, rightConstant: 0)
|
||||
NSLayoutConstraint.constraintPinSubview(detail, pinTop: true, topConstant: PaddingTwo, pinBottom: false, bottomConstant: 0, pinLeft: false, leftConstant: 0, pinRight: true, rightConstant: 0)
|
||||
NSLayoutConstraint(pinFirstView: title, toSecondView: message, withConstant: 0, directionVertical: true)?.isActive = true
|
||||
|
||||
let titleTrail = title.trailingAnchor.constraint(greaterThanOrEqualTo: detail.leadingAnchor, constant: PaddingOne)
|
||||
titleTrail.isActive = true
|
||||
let messageTrail = message.trailingAnchor.constraint(greaterThanOrEqualTo: detail.leadingAnchor, constant: PaddingOne)
|
||||
messageTrail.isActive = true
|
||||
|
||||
titleWidth = title.widthAnchor.constraint(lessThanOrEqualToConstant: bounds.width * 0.8 - PaddingOne)
|
||||
titleWidth?.priority = UILayoutPriority(rawValue: 750)
|
||||
titleWidth?.isActive = true
|
||||
|
||||
messageWidth = message.widthAnchor.constraint(lessThanOrEqualToConstant: bounds.width * 0.8 - PaddingOne)
|
||||
messageWidth?.priority = UILayoutPriority(rawValue: 750)
|
||||
messageWidth?.isActive = true
|
||||
|
||||
detailWidth = detail.widthAnchor.constraint(equalToConstant: bounds.width * 0.2)
|
||||
detailWidth?.priority = UILayoutPriority(rawValue: 755)
|
||||
detailWidth?.isActive = true
|
||||
|
||||
title.setContentHuggingPriority(UILayoutPriority(rawValue: 251), for: .horizontal)
|
||||
title.setContentHuggingPriority(UILayoutPriority(rawValue: 249), for: .vertical)
|
||||
title.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 750), for: .horizontal)
|
||||
title.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 250), for: .vertical)
|
||||
|
||||
message.setContentHuggingPriority(UILayoutPriority(rawValue: 251), for: .horizontal)
|
||||
message.setContentHuggingPriority(UILayoutPriority(rawValue: 249), for: .vertical)
|
||||
message.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 749), for: .horizontal)
|
||||
message.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 250), for: .vertical)
|
||||
|
||||
detail.setContentHuggingPriority(UILayoutPriority(rawValue: 251), for: .horizontal)
|
||||
detail.setContentHuggingPriority(UILayoutPriority(rawValue: 249), for: .vertical)
|
||||
detail.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 750), for: .horizontal)
|
||||
detail.setContentCompressionResistancePriority(.required, for: .vertical)
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,9 +159,9 @@ import Foundation
|
||||
|
||||
guard let dictionary = actionMap else { return }
|
||||
|
||||
title?.text = dictionary.stringForkey(KeyTitle)
|
||||
message?.text = dictionary.stringForkey(KeyMessage)
|
||||
detail?.text = dictionary.stringForkey("detail")
|
||||
title?.setWithJSON(dictionary.optionalDictionaryForKey("title"), delegateObject: delegateObject, additionalData: additionalData)
|
||||
message?.setWithJSON(dictionary.optionalDictionaryForKey("message"), delegateObject: delegateObject, additionalData: additionalData)
|
||||
detail?.setWithJSON(dictionary.optionalDictionaryForKey("detail"), delegateObject: delegateObject, additionalData: additionalData)
|
||||
|
||||
if let backgroundColorHex = dictionary[KeyBackgroundColor] as? String {
|
||||
backgroundColor = UIColor.mfGet(forHex: backgroundColorHex)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user