attempt 1: QMV doesn't have intrinsic content size, and requires a fixed

width to compute it's size, which we don't currently have.

// FREEBIE
This commit is contained in:
Michael Kirk 2018-04-09 17:00:44 -04:00
parent a6afa2cc06
commit 5807ba69ca
2 changed files with 64 additions and 59 deletions

View File

@ -29,6 +29,7 @@
#import "OWSMessageCell.h"
#import "OWSNavigationController.h"
#import "OWSProgressView.h"
#import "OWSQuotedMessageView.h"
#import "OWSWebRTCDataProtos.pb.h"
#import "PinEntryView.h"
#import "PrivacySettingsTableViewController.h"

View File

@ -20,6 +20,8 @@ class QuotedReplyPreview: UIView {
init(quotedReply: OWSQuotedReplyModel) {
super.init(frame: .zero)
let quotedMessageView = OWSQuotedMessageView(forPreview: quotedReply)
let isQuotingSelf = quotedReply.authorId == TSAccountManager.localNumber()
// used for stripe and author
@ -29,40 +31,40 @@ class QuotedReplyPreview: UIView {
// used for text and cancel
let foregroundColor: UIColor = .darkGray
let authorLabel: UILabel = UILabel()
authorLabel.textColor = authorColor
if isQuotingSelf {
authorLabel.text = NSLocalizedString("MEDIA_GALLERY_SENDER_NAME_YOU", comment: "")
} else {
authorLabel.text = Environment.current().contactsManager.displayName(forPhoneIdentifier: quotedReply.authorId)
}
authorLabel.font = .ows_dynamicTypeHeadline
let bodyLabel: UILabel = UILabel()
bodyLabel.textColor = foregroundColor
bodyLabel.font = .ows_dynamicTypeFootnote
bodyLabel.text = {
if let contentType = quotedReply.contentType {
let emoji = TSAttachmentStream.emoji(forMimeType: contentType)
return "\(emoji) \(quotedReply.body ?? "")"
} else {
return quotedReply.body
}
}()
let thumbnailView: UIView? = {
if let image = quotedReply.thumbnailImage {
let imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFill
imageView.autoPinToSquareAspectRatio()
imageView.layer.cornerRadius = 3.0
imageView.clipsToBounds = true
return imageView
}
return nil
}()
// let authorLabel: UILabel = UILabel()
// authorLabel.textColor = authorColor
// if isQuotingSelf {
// authorLabel.text = NSLocalizedString("MEDIA_GALLERY_SENDER_NAME_YOU", comment: "")
// } else {
// authorLabel.text = Environment.current().contactsManager.displayName(forPhoneIdentifier: quotedReply.authorId)
// }
// authorLabel.font = .ows_dynamicTypeHeadline
//
// let bodyLabel: UILabel = UILabel()
// bodyLabel.textColor = foregroundColor
// bodyLabel.font = .ows_dynamicTypeFootnote
//
// bodyLabel.text = {
// if let contentType = quotedReply.contentType {
// let emoji = TSAttachmentStream.emoji(forMimeType: contentType)
// return "\(emoji) \(quotedReply.body ?? "")"
// } else {
// return quotedReply.body
// }
// }()
//
// let thumbnailView: UIView? = {
// if let image = quotedReply.thumbnailImage {
// let imageView = UIImageView(image: image)
// imageView.contentMode = .scaleAspectFill
// imageView.autoPinToSquareAspectRatio()
// imageView.layer.cornerRadius = 3.0
// imageView.clipsToBounds = true
//
// return imageView
// }
// return nil
// }()
let cancelButton: UIButton = UIButton(type: .custom)
// FIXME proper image asset/size
@ -71,35 +73,37 @@ class QuotedReplyPreview: UIView {
cancelButton.imageView?.tintColor = foregroundColor
cancelButton.addTarget(self, action: #selector(didTapCancel), for: .touchUpInside)
let quoteStripe: UIView = UIView()
quoteStripe.backgroundColor = authorColor
// let quoteStripe: UIView = UIView()
// quoteStripe.backgroundColor = authorColor
//
// let textColumn = UIView.container()
// textColumn.addSubview(authorLabel)
// textColumn.addSubview(bodyLabel)
//
// authorLabel.autoPinEdges(toSuperviewMarginsExcludingEdge: .bottom)
// authorLabel.autoPinEdge(.bottom, to: .top, of: bodyLabel)
// bodyLabel.autoPinEdges(toSuperviewMarginsExcludingEdge: .top)
//
// let contentViews: [UIView] = [textColumn, thumbnailView, cancelButton].flatMap { return $0 }
let textColumn = UIView.container()
textColumn.addSubview(authorLabel)
textColumn.addSubview(bodyLabel)
authorLabel.autoPinEdges(toSuperviewMarginsExcludingEdge: .bottom)
authorLabel.autoPinEdge(.bottom, to: .top, of: bodyLabel)
bodyLabel.autoPinEdges(toSuperviewMarginsExcludingEdge: .top)
let contentViews: [UIView] = [textColumn, thumbnailView, cancelButton].flatMap { return $0 }
let contentViews: [UIView] = [quotedMessageView, cancelButton]
let contentRow = UIStackView(arrangedSubviews: contentViews)
contentRow.axis = .horizontal
self.addSubview(contentRow)
self.addSubview(quoteStripe)
// Layout
let kQuoteStripeWidth: CGFloat = 4
self.layoutMargins = UIEdgeInsets(top: 6,
left: kQuoteStripeWidth + 8,
bottom: 2,
right: 4)
quoteStripe.autoPinEdge(toSuperviewEdge: .leading)
quoteStripe.autoPinHeightToSuperview()
quoteStripe.autoSetDimension(.width, toSize: kQuoteStripeWidth)
// self.addSubview(quoteStripe)
//
// // Layout
//
// let kQuoteStripeWidth: CGFloat = 4
// self.layoutMargins = UIEdgeInsets(top: 6,
// left: kQuoteStripeWidth + 8,
// bottom: 2,
// right: 4)
//
// quoteStripe.autoPinEdge(toSuperviewEdge: .leading)
// quoteStripe.autoPinHeightToSuperview()
// quoteStripe.autoSetDimension(.width, toSize: kQuoteStripeWidth)
//
contentRow.autoPinEdgesToSuperviewMargins()
cancelButton.autoSetDimensions(to: CGSize(width: 40, height: 40))