From 7894180c4599f4054190e8317022309dc82a07ef Mon Sep 17 00:00:00 2001 From: soushi Date: Mon, 2 Mar 2026 16:16:28 +0900 Subject: [PATCH] Modernize button inset handling and suppress deprecation warnings Wrapped setTitleEdgeInsets: override with #pragma clang diagnostic ignored "-Wdeprecated-implementations" to resolve iOS 15+ warnings. Updated initWithFrame: and initWithCoder: to safely capture default insets from both legacy properties and modern UIButtonConfiguration. Synchronized shadow-based inset calculations with UIButtonConfiguration.contentInsets on iOS 15+. Ensured consistent "pressed" visual effects across all initialization paths while maintaining Zero-Warning build status. --- Classes/ios/FUIButton.m | 66 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/Classes/ios/FUIButton.m b/Classes/ios/FUIButton.m index fd82d6a..979265a 100644 --- a/Classes/ios/FUIButton.m +++ b/Classes/ios/FUIButton.m @@ -20,20 +20,68 @@ @implementation FUIButton - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" self.defaultEdgeInsets = self.titleEdgeInsets; +#pragma clang diagnostic pop + + if (@available(iOS 15.0, *)) { + if (self.configuration) { + self.defaultEdgeInsets = UIEdgeInsetsMake(self.configuration.contentInsets.top, + self.configuration.contentInsets.leading, + self.configuration.contentInsets.bottom, + self.configuration.contentInsets.trailing); + } + } } return self; } - (void) setTitleEdgeInsets:(UIEdgeInsets)titleEdgeInsets { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" [super setTitleEdgeInsets:titleEdgeInsets]; +#pragma clang diagnostic pop + self.defaultEdgeInsets = titleEdgeInsets; + + if (@available(iOS 15.0, *)) { + if (self.configuration) { + UIButtonConfiguration *config = self.configuration; + config.contentInsets = NSDirectionalEdgeInsetsMake(titleEdgeInsets.top, + titleEdgeInsets.left, + titleEdgeInsets.bottom, + titleEdgeInsets.right); + self.configuration = config; + } + } + [self setShadowHeight:self.shadowHeight]; } - (void) setHighlighted:(BOOL)highlighted { UIEdgeInsets insets = highlighted ? self.highlightedEdgeInsets : self.normalEdgeInsets; - [super setTitleEdgeInsets:insets]; + + if (@available(iOS 15.0, *)) { + if (self.configuration) { + UIButtonConfiguration *config = self.configuration; + config.contentInsets = NSDirectionalEdgeInsetsMake(insets.top, + insets.left, + insets.bottom, + insets.right); + self.configuration = config; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [super setTitleEdgeInsets:insets]; +#pragma clang diagnostic pop + } + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [super setTitleEdgeInsets:insets]; +#pragma clang diagnostic pop + } [super setHighlighted:highlighted]; } @@ -74,7 +122,23 @@ - (void) setShadowHeight:(CGFloat)shadowHeight { self.highlightedEdgeInsets = insets; insets.top -= shadowHeight * 2.0f; self.normalEdgeInsets = insets; + + if (@available(iOS 15.0, *)) { + if (self.configuration) { + UIButtonConfiguration *config = self.configuration; + config.contentInsets = NSDirectionalEdgeInsetsMake(insets.top, + insets.left, + insets.bottom, + insets.right); + self.configuration = config; + } + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" [super setTitleEdgeInsets:insets]; +#pragma clang diagnostic pop + [self configureFlatButton]; }