Autohide error label if the grid cell is too small

Also, some tweaks to more closely match design spec.
This commit is contained in:
Michelle Linington 2020-11-25 17:31:30 -08:00
parent bd2e52f293
commit 065832db55
3 changed files with 26 additions and 1 deletions

View File

@ -27,6 +27,7 @@ class GroupCallErrorView: UIView {
var labelText: String? {
didSet {
label.text = labelText
configure()
}
}
@ -61,7 +62,7 @@ class GroupCallErrorView: UIView {
comment: "A button to receive more info about not seeing a participant in group call grid")
let button = UIButton()
button.backgroundColor = UIColor.darkGray
button.backgroundColor = .ows_gray75
button.layer.cornerRadius = 16
button.titleLabel?.textAlignment = .center
button.contentEdgeInsets = UIEdgeInsets(top: 3, leading: 12, bottom: 3, trailing: 12)
@ -95,11 +96,15 @@ class GroupCallErrorView: UIView {
stackView.setCustomSpacing(16, after: label)
addSubview(stackView)
insetsLayoutMarginsFromSafeArea = false
stackView.autoPinWidthToSuperviewMargins()
stackView.autoVCenterInSuperview()
stackView.autoPinEdge(toSuperviewMargin: .top, relation: .greaterThanOrEqual)
stackView.autoPinEdge(toSuperviewMargin: .bottom, relation: .greaterThanOrEqual)
iconView.setCompressionResistanceHigh()
button.setCompressionResistanceHigh()
iconView.autoSetDimensions(to: CGSize(width: 24, height: 24))
addSubview(miniButton)
@ -122,6 +127,15 @@ class GroupCallErrorView: UIView {
label.isHidden = isCompact
button.isHidden = isCompact
miniButton.isHidden = !isCompact
layoutIfNeeded()
// The error text is easily truncated in small cells with large dynamic type.
// If the label gets truncated, just hide it.
if !label.isHidden {
let labelDesiredHeight = label.sizeThatFits(CGSize(width: label.bounds.width, height: .greatestFiniteMagnitude)).height
label.isHidden = (labelDesiredHeight > label.bounds.height)
}
}
@objc

View File

@ -344,6 +344,8 @@ class GroupCallRemoteMemberView: GroupCallMemberView {
if !device.mediaKeysReceived {
// No media keys. Display error view
errorView.isHidden = false
noVideoView.backgroundColor = .ows_black
backgroundAvatarView.image = profileImage?.makeGrayscale()
configureErrorView(for: device.address)

View File

@ -30,12 +30,18 @@ public extension UIDevice {
case 1920, 2208:
// iPhone 6+/6S+/7+/8+//
return false
case 2340:
// iPhone 12 Mini
return true
case 2436:
// iPhone X, iPhone XS
return true
case 2688:
// iPhone X Max
return true
case 2778:
// iPhone 12 Pro Max
return true
default:
// Verify all our IOS_DEVICE_CONSTANT tags make sense when adding a new device size.
owsFailDebug("unknown device format")
@ -71,6 +77,9 @@ public extension UIDevice {
case 2688:
// iPhone X Max
return true
case 2778:
// iPhone 12 Pro Max
return true
default:
// Verify all our IOS_DEVICE_CONSTANT tags make sense when adding a new device size.
owsFailDebug("unknown device format")