forked from organicmaps/organicmaps
[ios] Added route type buttons implementation
This commit is contained in:
parent
3a8bf4be7f
commit
872075d733
4 changed files with 99 additions and 2 deletions
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue