[ios] Added button background color name support to coloring.

This commit is contained in:
Ilya Grechuhin 2016-08-04 13:54:09 +03:00
parent a2d80a5bbb
commit 94a45b0f06
3 changed files with 40 additions and 3 deletions

View file

@ -1,6 +1,7 @@
#import "Common.h"
#import "UIColor+MapsMeColor.h"
#import "UIImageView+Coloring.h"
#import "UIButton+RuntimeAttributes.h"
#import "UIKitCategories.h"
#import <SafariServices/SafariServices.h>
@ -249,6 +250,16 @@
[self setTitleColor:oppositeHightlighted forState:UIControlStateHighlighted];
if (oppositeDisabled)
[self setTitleColor:oppositeDisabled forState:UIControlStateDisabled];
NSString * backgroundColorName = [self backgroundColorName];
NSString * backgroundHighlightedColorName = [self backgroundHighlightedColorName];
NSString * backgroundSelectedColorName = [self backgroundSelectedColorName];
if (backgroundColorName)
[self setBackgroundColorName:backgroundColorName];
if (backgroundHighlightedColorName)
[self setBackgroundHighlightedColorName:backgroundHighlightedColorName];
if (backgroundSelectedColorName)
[self setBackgroundSelectedColorName:backgroundSelectedColorName];
}
@end
@ -383,4 +394,4 @@
return image;
}
@end
@end

View file

@ -4,6 +4,13 @@
@property (nonatomic) NSString * localizedText;
- (void)setBackgroundColorName:(NSString *)colorName;
- (NSString *)backgroundColorName;
- (void)setBackgroundHighlightedColorName:(NSString *)colorName;
- (NSString *)backgroundHighlightedColorName;
- (void)setBackgroundSelectedColorName:(NSString *)colorName;
- (NSString *)backgroundSelectedColorName;
- (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state;
@end
@end

View file

@ -2,6 +2,7 @@
#import "UIButton+RuntimeAttributes.h"
#import "UIColor+MapsMeColor.h"
#import "UIFont+MapsMeFonts.h"
#import <objc/runtime.h>
@implementation UIButton (RuntimeAttributes)
@ -43,23 +44,41 @@
- (void)setBackgroundColorName:(NSString *)colorName
{
objc_setAssociatedObject(self, @selector(backgroundColorName), colorName, OBJC_ASSOCIATION_COPY_NONATOMIC);
[self setBackgroundColor:[UIColor colorWithName:colorName] forState:UIControlStateNormal];
}
- (NSString *)backgroundColorName
{
return objc_getAssociatedObject(self, @selector(backgroundColorName));
}
- (void)setBackgroundHighlightedColorName:(NSString *)colorName
{
objc_setAssociatedObject(self, @selector(backgroundHighlightedColorName), colorName, OBJC_ASSOCIATION_COPY_NONATOMIC);
[self setBackgroundColor:[UIColor colorWithName:colorName] forState:UIControlStateHighlighted];
}
- (NSString *)backgroundHighlightedColorName
{
return objc_getAssociatedObject(self, @selector(backgroundHighlightedColorName));
}
- (void)setBackgroundSelectedColorName:(NSString *)colorName
{
objc_setAssociatedObject(self, @selector(backgroundSelectedColorName), colorName, OBJC_ASSOCIATION_COPY_NONATOMIC);
[self setBackgroundColor:[UIColor colorWithName:colorName] forState:UIControlStateSelected];
}
- (NSString *)backgroundSelectedColorName
{
return objc_getAssociatedObject(self, @selector(backgroundSelectedColorName));
}
- (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state
{
[self setBackgroundColor:[UIColor clearColor]];
[self setBackgroundImage:[UIImage imageWithColor:color] forState:state];
}
@end
@end