TBToolbarButton.m 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // TBToolbarButton.m
  3. //
  4. // Created by Rudd Fawcett on 12/3/13.
  5. // Copyright (c) 2013 Rudd Fawcett. All rights reserved.
  6. //
  7. #import "TBToolbarButton.h"
  8. #import "UIFont+FLEX.h"
  9. @interface TBToolbarButton ()
  10. @property (nonatomic ) NSString *title;
  11. @property (nonatomic, copy) TBToolbarAction buttonPressBlock;
  12. @end
  13. @implementation TBToolbarButton
  14. + (instancetype)buttonWithTitle:(NSString *)title {
  15. return [[self alloc] initWithTitle:title];
  16. }
  17. + (instancetype)buttonWithTitle:(NSString *)title action:(TBToolbarAction)eventHandler forControlEvents:(UIControlEvents)controlEvent {
  18. TBToolbarButton *newButton = [TBToolbarButton buttonWithTitle:title];
  19. [newButton addEventHandler:eventHandler forControlEvents:controlEvent];
  20. return newButton;
  21. }
  22. + (instancetype)buttonWithTitle:(NSString *)title action:(TBToolbarAction)eventHandler {
  23. return [self buttonWithTitle:title action:eventHandler forControlEvents:UIControlEventTouchUpInside];
  24. }
  25. - (id)initWithTitle:(NSString *)title {
  26. self = [super init];
  27. if (self) {
  28. _title = title;
  29. self.layer.cornerRadius = 5.0f;
  30. self.layer.borderWidth = 1.0f;
  31. self.titleLabel.font = [UIFont flex_codeFont];
  32. [self setTitle:self.title forState:UIControlStateNormal];
  33. [self sizeToFit];
  34. CGRect frame = self.frame;
  35. frame.size.width += 40;
  36. frame.size.height += 10;
  37. self.frame = frame;
  38. self.appearance = UIKeyboardAppearanceLight;
  39. }
  40. return self;
  41. }
  42. - (void)addEventHandler:(TBToolbarAction)eventHandler forControlEvents:(UIControlEvents)controlEvent {
  43. self.buttonPressBlock = eventHandler;
  44. [self addTarget:self action:@selector(buttonPressed) forControlEvents:controlEvent];
  45. }
  46. - (void)buttonPressed {
  47. self.buttonPressBlock(self.title);
  48. }
  49. - (void)setAppearance:(UIKeyboardAppearance)appearance {
  50. _appearance = appearance;
  51. switch (_appearance) {
  52. case UIKeyboardAppearanceDefault:
  53. case UIKeyboardAppearanceLight:
  54. self.backgroundColor = [UIColor whiteColor];
  55. self.layer.borderColor = [UIColor colorWithWhite:1.000 alpha:0.500].CGColor;
  56. self.titleLabel.textColor = [UIColor blackColor];
  57. [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  58. break;
  59. case UIKeyboardAppearanceDark:
  60. self.backgroundColor = [UIColor colorWithWhite:0.336 alpha:1.000];
  61. self.layer.borderColor = [UIColor clearColor].CGColor;
  62. self.titleLabel.textColor = [UIColor whiteColor];
  63. [self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  64. break;
  65. default:
  66. self.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0];
  67. self.layer.borderColor = [UIColor colorWithWhite:0.8 alpha:1.0].CGColor;
  68. self.titleLabel.textColor = [UIColor colorWithWhite:0.5 alpha:1.0];
  69. [self setTitleColor:[UIColor colorWithWhite:0.5 alpha:1.0] forState:UIControlStateNormal];
  70. break;
  71. }
  72. }
  73. - (BOOL)isEqual:(id)object {
  74. if ([object isKindOfClass:[TBToolbarButton class]]) {
  75. return [self.title isEqualToString:[object title]];
  76. }
  77. return NO;
  78. }
  79. - (NSUInteger)hash {
  80. return self.title.hash;
  81. }
  82. @end