diff --git a/CHANGELOG.md b/CHANGELOG.md index e4af49b0..9ca1f747 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ### Fixed +- Fixed warning in Package.swift referencing a non-existent Resources directory. +- Fixed warning for a cross-module protocol conformance. +- Fixed deprecation warning by adopting `UIButton.Configuration` for swipe action buttons. + ### Added ### Removed diff --git a/ListableUI/Sources/Internal/SwipeActionsView.swift b/ListableUI/Sources/Internal/SwipeActionsView.swift index cde56bd6..e149c37e 100644 --- a/ListableUI/Sources/Internal/SwipeActionsView.swift +++ b/ListableUI/Sources/Internal/SwipeActionsView.swift @@ -264,13 +264,16 @@ private class DefaultSwipeActionButton: UIButton { override init(frame: CGRect) { super.init(frame: frame) - titleLabel?.font = .systemFont(ofSize: 15, weight: .medium) - titleLabel?.lineBreakMode = .byTruncatingTail + var configuration = UIButton.Configuration.plain() + configuration.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: inset, bottom: 0, trailing: inset) + configuration.titleLineBreakMode = .byTruncatingTail + configuration.titleAlignment = .center + self.configuration = configuration + titleLabel?.numberOfLines = 2 titleLabel?.minimumScaleFactor = 0.8 titleLabel?.adjustsFontSizeToFitWidth = true - titleLabel?.textAlignment = .center - contentEdgeInsets = UIEdgeInsets(top: 0, left: inset, bottom: 0, right: inset) + addTarget(self, action: #selector(onTap), for: .primaryActionTriggered) } @@ -278,6 +281,24 @@ private class DefaultSwipeActionButton: UIButton { fatalError("init(coder:) has not been implemented") } + override func updateConfiguration() { + super.updateConfiguration() + + if let title = action?.title, let color = action?.tintColor { + configuration?.attributedTitle = AttributedString( + title, + attributes: AttributeContainer([ + .font: UIFont.systemFont(ofSize: 15, weight: .medium), + .foregroundColor: color, + ]), + ) + } else { + configuration?.attributedTitle = nil + } + + configuration?.image = action?.image + } + func set(action: SwipeAction, didPerformAction: @escaping SwipeAction.OnDidPerformAction) { self.action = action @@ -289,10 +310,8 @@ private class DefaultSwipeActionButton: UIButton { // an incorrect visual appearance. tintColor = action.tintColor - - setTitle(action.title, for: .normal) - setTitleColor(action.tintColor, for: .normal) - setImage(action.image, for: .normal) + + setNeedsUpdateConfiguration() accessibilityLabel = action.accessibilityLabel accessibilityValue = action.accessibilityValue diff --git a/ListableUI/Sources/ListScrollPositionInfo.swift b/ListableUI/Sources/ListScrollPositionInfo.swift index 0ec59920..1823a824 100644 --- a/ListableUI/Sources/ListScrollPositionInfo.swift +++ b/ListableUI/Sources/ListScrollPositionInfo.swift @@ -173,7 +173,7 @@ extension UIEdgeInsets } } -extension UIRectEdge : CustomDebugStringConvertible +extension UIRectEdge : Swift.CustomDebugStringConvertible { static func visibleScrollViewContentEdges( bounds : CGRect, diff --git a/Package.swift b/Package.swift index 314dabfd..9c2e7f8b 100644 --- a/Package.swift +++ b/Package.swift @@ -46,9 +46,6 @@ let package = Package( path: "BlueprintUILists", exclude: [ "Tests", - ], - resources: [ - .process("Resources"), ] ), ],