Merge branch 'mbruce/bugfixes' into 'develop'

bug merge

See merge request BPHV_MIPS/vds_ios!114
This commit is contained in:
Bruce, Matt R 2023-09-19 17:51:14 +00:00
commit 6fc8c0cf49
5 changed files with 69 additions and 14 deletions

View File

@ -1175,7 +1175,7 @@
BUILD_LIBRARY_FOR_DISTRIBUTION = YES; BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CODE_SIGN_IDENTITY = ""; CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 42; CURRENT_PROJECT_VERSION = 43;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
@ -1212,7 +1212,7 @@
BUILD_LIBRARY_FOR_DISTRIBUTION = YES; BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CODE_SIGN_IDENTITY = ""; CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 42; CURRENT_PROJECT_VERSION = 43;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;

View File

@ -78,6 +78,12 @@ open class Button: ButtonBase, Useable {
} }
} }
/// Enum used to describe the width of a fixed value or percentage of parent's width.
public enum Width {
case percentage(CGFloat)
case value(CGFloat)
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Private Properties // MARK: - Private Properties
//-------------------------------------------------- //--------------------------------------------------
@ -92,14 +98,23 @@ open class Button: ButtonBase, Useable {
/// The Use for this Button. /// The Use for this Button.
open var use: Use = .primary { didSet { setNeedsUpdate() } } open var use: Use = .primary { didSet { setNeedsUpdate() } }
private var _width: CGFloat? = nil private var _width: Width? = nil
/// If there is a width that is larger than this size's minmumWidth, the button will resize to this width. /// If there is a width that is larger than this size's minmumWidth, the button will resize to this width.
open var width: CGFloat? { open var width: Width? {
get { _width } get { _width }
set { set {
if let newValue, newValue > size.minimumWidth { if let newValue {
_width = newValue switch newValue {
case .percentage(let percentage):
if percentage <= 100.0 {
_width = newValue
}
case .value(let value):
if value > 0 && value > size.minimumWidth {
_width = newValue
}
}
} else { } else {
_width = nil _width = nil
} }
@ -118,13 +133,35 @@ open class Button: ButtonBase, Useable {
/// The natural size for the receiving view, considering only properties of the view itself. /// The natural size for the receiving view, considering only properties of the view itself.
open override var intrinsicContentSize: CGSize { open override var intrinsicContentSize: CGSize {
guard let width, width > 0 else { // get the intrinsic size
var superSize = super.intrinsicContentSize var defaultSize = super.intrinsicContentSize
superSize.height = size.height // ensure the size height
return superSize defaultSize.height = size.height
// take the max width either intrinsic or size's minimumWidth
defaultSize.width = max(defaultSize.width, size.minimumWidth)
guard let width else {
return defaultSize
} }
return CGSize(width: width > size.minimumWidth ? width : size.minimumWidth, height: size.height) switch width {
case .percentage(let percentage):
// test the superview's width against the percentage to ensure
// it is greater than the size's minimum width
guard let superWidth = superview?.frame.width else {
return defaultSize
}
// if so set the width off percentage
defaultSize.width = max(superWidth * (percentage / 100), size.minimumWidth)
return defaultSize
case .value(let value):
// test fixed value vs minimum width and take the greater value
defaultSize.width = max(value, size.minimumWidth)
return defaultSize
}
} }
//-------------------------------------------------- //--------------------------------------------------
@ -216,6 +253,12 @@ open class Button: ButtonBase, Useable {
invalidateIntrinsicContentSize() invalidateIntrinsicContentSize()
} }
open override func layoutSubviews() {
super.layoutSubviews()
invalidateIntrinsicContentSize()
}
} }
extension Use { extension Use {

View File

@ -149,7 +149,7 @@ open class ButtonGroup: View {
case .percentage(let value): percentage = value case .percentage(let value): percentage = value
} }
} }
buttons.forEach { ($0 as? Button)?.width = width } buttons.forEach { if let width { ($0 as? Button)?.width = .value(width) } }
positionLayout.buttonPercentage = percentage positionLayout.buttonPercentage = percentage
collectionView.reloadData() collectionView.reloadData()

View File

@ -44,6 +44,7 @@ open class Icon: View {
//-------------------------------------------------- //--------------------------------------------------
/// UIImageView used to render the icon. /// UIImageView used to render the icon.
open var imageView = UIImageView().with { open var imageView = UIImageView().with {
$0.isAccessibilityElement = false
$0.translatesAutoresizingMaskIntoConstraints = false $0.translatesAutoresizingMaskIntoConstraints = false
$0.contentMode = .scaleAspectFill $0.contentMode = .scaleAspectFill
$0.clipsToBounds = true $0.clipsToBounds = true
@ -124,6 +125,11 @@ open class Icon: View {
imageView.image = nil imageView.image = nil
} }
open override func updateAccessibility() {
super.updateAccessibility()
accessibilityLabel = name?.rawValue ?? "icon"
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Private Methods // MARK: - Private Methods
//-------------------------------------------------- //--------------------------------------------------

View File

@ -1,3 +1,9 @@
1.0.43
=======
- CXTDT-464973 - Button - Width percentage parameter missing.
- ONEAPP-5106 - Icon - Name not used in Voice over.
- CXTDT-464974 - Line - Needs vertical orientation added.
1.0.42 1.0.42
======= =======
- CXTDT-462698 - Tabs - Incorrect letter spacing on Large tabs - CXTDT-462698 - Tabs - Incorrect letter spacing on Large tabs