Index: ios/chrome/browser/ui/fancy_ui/colored_button.mm |
diff --git a/ios/chrome/browser/ui/fancy_ui/tinted_button.mm b/ios/chrome/browser/ui/fancy_ui/colored_button.mm |
similarity index 54% |
rename from ios/chrome/browser/ui/fancy_ui/tinted_button.mm |
rename to ios/chrome/browser/ui/fancy_ui/colored_button.mm |
index b0c06a608926d0828dde8e096bd77eeb9b319fb9..e5daa5455d25e12ff7572f78b2ab7bef8ac092a2 100644 |
--- a/ios/chrome/browser/ui/fancy_ui/tinted_button.mm |
+++ b/ios/chrome/browser/ui/fancy_ui/colored_button.mm |
@@ -2,23 +2,28 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "ios/chrome/browser/ui/fancy_ui/tinted_button.h" |
+#include "ios/chrome/browser/ui/fancy_ui/colored_button.h" |
#if !defined(__has_feature) || !__has_feature(objc_arc) |
#error "This file requires ARC support." |
#endif |
-@interface TintedButton () { |
+@interface ColoredButton () { |
UIColor* normalStateTint_; |
UIColor* highlightedTint_; |
+ UIColor* normalStateBackgroundColor_; |
+ UIColor* highlightedBackgroundColor_; |
} |
// Makes the button's tint color reflect its current state. |
- (void)updateTint; |
+// Makes the button's background color reflect its current state. |
+- (void)updateBackgroundColor; |
+ |
@end |
-@implementation TintedButton |
+@implementation ColoredButton |
- (void)setTintColor:(UIColor*)color forState:(UIControlState)state { |
switch (state) { |
@@ -39,11 +44,27 @@ - (void)setTintColor:(UIColor*)color forState:(UIControlState)state { |
[self updateTint]; |
} |
+- (void)setBackgroundColor:(UIColor*)color forState:(UIControlState)state { |
+ switch (state) { |
+ case UIControlStateNormal: |
+ normalStateBackgroundColor_ = [color copy]; |
+ break; |
+ case UIControlStateHighlighted: |
+ highlightedBackgroundColor_ = [color copy]; |
+ break; |
+ default: |
+ return; |
+ } |
+ |
+ [self updateBackgroundColor]; |
+} |
+ |
#pragma mark - UIControl |
- (void)setHighlighted:(BOOL)highlighted { |
[super setHighlighted:highlighted]; |
[self updateTint]; |
+ [self updateBackgroundColor]; |
} |
#pragma mark - Private |
@@ -64,4 +85,20 @@ - (void)updateTint { |
self.tintColor = newTint; |
} |
+- (void)updateBackgroundColor { |
+ UIColor* newBackgroundColor = nil; |
+ switch (self.state) { |
+ case UIControlStateNormal: |
+ newBackgroundColor = normalStateBackgroundColor_; |
+ break; |
+ case UIControlStateHighlighted: |
+ newBackgroundColor = highlightedBackgroundColor_; |
+ break; |
+ default: |
+ newBackgroundColor = normalStateBackgroundColor_; |
+ break; |
+ } |
+ self.backgroundColor = newBackgroundColor; |
+} |
+ |
@end |