[ios] Added route type buttons implementation

This commit is contained in:
v.mikhaylenko 2015-10-07 15:50:51 +03:00
parent 3a8bf4be7f
commit 872075d733
4 changed files with 99 additions and 2 deletions

View file

@ -0,0 +1,14 @@
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface MWMRouteTypeButton : UIButton
@property (nonatomic, getter=isSelected) BOOL selected;
@property (nonatomic) IBInspectable UIImage * icon;
@property (nonatomic) IBInspectable UIImage * highlightedIcon;
@property (nonatomic) IBInspectable UIImage * selectedIcon;
- (void)startAnimating;
- (void)stopAnimating;
@end

View file

@ -0,0 +1,81 @@
#import "MWMRouteTypeButton.h"
@interface MWMRouteTypeButton ()
@property (nonatomic, weak) IBOutlet UIButton * button;
@property (nonatomic, weak) IBOutlet UIImageView * spinner;
@end
@implementation MWMRouteTypeButton
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder])
{
UIView * v = [[NSBundle.mainBundle loadNibNamed:self.class.className owner:self options:nil] firstObject];
[self addSubview:v];
[self.button addTarget:self action:@selector(tap) forControlEvents:UIControlEventTouchUpInside];
self.spinner.hidden = YES;
}
return self;
}
- (void)stopAnimating
{
self.spinner.hidden = YES;
[self.spinner stopAnimating];
}
- (void)startAnimating
{
self.spinner.hidden = NO;
NSUInteger const animationImagesCount = 12;
NSMutableArray * animationImages = [NSMutableArray arrayWithCapacity:animationImagesCount];
for (NSUInteger i = 0; i < animationImagesCount; ++i)
animationImages[i] = [UIImage imageNamed:[NSString stringWithFormat:@"Spinner_%@", @(i+1)]];
self.spinner.animationImages = animationImages;
[self.spinner startAnimating];
}
- (void)setIcon:(UIImage *)icon
{
_icon = icon;
[self.button setImage:icon forState:UIControlStateNormal];
}
- (void)setHighlightedIcon:(UIImage *)highlightedIcon
{
_highlightedIcon = highlightedIcon;
[self.button setImage:highlightedIcon forState:UIControlStateHighlighted];
}
- (void)setSelectedIcon:(UIImage *)selectedIcon
{
_selectedIcon = selectedIcon;
[self.button setImage:selectedIcon forState:UIControlStateSelected];
}
- (void)setSelected:(BOOL)selected
{
self.button.selected = selected;
if (!selected)
[self stopAnimating];
}
- (BOOL)isSelected
{
return self.button.isSelected;
}
- (void)tap
{
if (self.selected)
return;
[self startAnimating];
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
}
@end

View file

@ -1,11 +1,12 @@
#import "MWMNavigationView.h"
@class MWMNavigationDashboardEntity;
@class MWMRouteTypeButton;
@interface MWMRoutePreview : MWMNavigationView
@property (weak, nonatomic) IBOutlet UIButton * pedestrian;
@property (weak, nonatomic) IBOutlet UIButton * vehicle;
@property (weak, nonatomic) IBOutlet MWMRouteTypeButton * pedestrian;
@property (weak, nonatomic) IBOutlet MWMRouteTypeButton * vehicle;
- (void)configureWithEntity:(MWMNavigationDashboardEntity *)entity;
- (void)statePlanning;

View file

@ -3,6 +3,7 @@
#import "MWMRoutePointCell.h"
#import "MWMRoutePointLayout.h"
#import "MWMRoutePreview.h"
#import "MWMRouteTypeButton.h"
#import "TimeUtils.h"
#import "UIColor+MapsMeColor.h"
#import "UIFont+MapsMeFonts.h"