高德导航更多按钮的点击视图

高德导航更多按钮的点击视图 <自定义的>

 

 

 

------------------ #import "MoreMenuView.h" ----------------

#import <UIKit/UIKit.h>

#import <AMapNaviKit/AMapNaviCommonObj.h>

 

@protocol MoreMenuViewDelegate;

 

@interface MoreMenuView : UIView

 

@property (nonatomic, assign) id<MoreMenuViewDelegate> delegate;

 

@property (nonatomic, assign) AMapNaviViewTrackingMode trackingMode;

@property (nonatomic, assign) BOOL showNightType;

 

@end

 

@protocol MoreMenuViewDelegate <NSObject>

@optional

 

- (void)moreMenuViewFinishButtonClicked;

- (void)moreMenuViewTrackingModeChangeTo:(AMapNaviViewTrackingMode)trackingMode;

- (void)moreMenuViewNightTypeChangeTo:(BOOL)isShowNightType;

 

@end

 

 

 

------------------ #import "MoreMenuView.m" ----------------

 

#define kOptionTableViewHieght  160.0f

#define kFinishButtonHeight     40.0f

#define kTableViewHeaderHeight  40.0f

#define kTableViewCellHeight    60.0f

#define kContainerViewHeight    (kOptionTableViewHieght + kFinishButtonHeight + 10.f)

 

 

@interface MoreMenuView ()<UITableViewDataSource, UITableViewDelegate>

{

    UIView *_maskView;

    UIView *_containerView;

    UITableView *_optionTableView;

    NSArray *_sections;

    NSArray *_options;

    

    UISegmentedControl *_viewModeSeg;

    UISegmentedControl *_nightTypeSeg;

    

    UIButton *_finishButton;

}

 

@end

 

@implementation MoreMenuView

 

@synthesize showNightType = _showNightType;

 

#pragma mark - Initialization

 

- (instancetype)init

{

    self = [super init];

    if (self) {

        [self setUp];

    }

    return self;

}

 

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self)

    {

        [self setUp];

    }

    

    return self;

}

 

- (instancetype)initWithCoder:(NSCoder *)coder

{

    self = [super initWithCoder:coder];

    if (self) {

        [self setUp];

    }

    return self;

}

 

- (void)setUp {

    

    self.frame = [UIScreen mainScreen].bounds;

    self.backgroundColor = [UIColor clearColor];

    

    [self initProperties];

    

    [self createMoreMenuView];

}

 

- (void)initProperties

{

    _sections = @[@"偏好设置"];

    

    _options = @[@[@"跟随模式", @"昼夜模式"]];

}

 

- (void)createMoreMenuView

{

    

    [self initMaskView];

    

    [self initTableView];

    

    [self initFinishButton];

}

 

- (void)initMaskView

{

    _maskView = [[UIView alloc] initWithFrame:self.bounds];

    _maskView.backgroundColor = [UIColor blackColor];

    _maskView.alpha = 0.5;

    _maskView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

    

    [self addSubview:_maskView];

}

 

- (void)initTableView

{

    _containerView = [[UIView alloc] initWithFrame:CGRectMake(0, self.bounds.size.height - kContainerViewHeight, self.bounds.size.width, kContainerViewHeight)];

    _containerView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;

    _containerView.backgroundColor = [UIColor whiteColor];

    [self addSubview:_containerView];

    

    _optionTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), kOptionTableViewHieght)

                                                    style:UITableViewStylePlain];

    _optionTableView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;

    _optionTableView.backgroundColor = [UIColor clearColor];

    _optionTableView.delegate = self;

    _optionTableView.dataSource = self;

    _optionTableView.allowsSelection = NO;

    _optionTableView.scrollEnabled = NO;

    

    UIView *view = [[UIView alloc] init];

    view.backgroundColor = [UIColor clearColor];

    _optionTableView.tableFooterView = view;

    

    [_containerView addSubview:_optionTableView];

}

 

- (void)initFinishButton

{

    _finishButton = [[UIButton alloc] initWithFrame:CGRectMake(20, kOptionTableViewHieght , CGRectGetWidth(self.bounds) - 40, kFinishButtonHeight)];

    _finishButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

    _finishButton.layer.cornerRadius = 5;

    [_finishButton setBackgroundColor:[UIColor colorWithRed:56/255.0 green:114/255.0 blue:250/255.0 alpha:1]];

    [_finishButton setTitle:@"完 成" forState:UIControlStateNormal];

    [_finishButton addTarget:self action:@selector(finishButtonAction:) forControlEvents:UIControlEventTouchUpInside];

    

    [_containerView addSubview:_finishButton];

}

 

#pragma mark - TableView Delegate

 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

    return kTableViewHeaderHeight;

}

 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return kTableViewCellHeight;

}

 

#pragma mark - TableView DataSource Delegate

 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return _sections.count;

}

 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

    return _sections[section];

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [_options[section] count];

}

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    NSString *optionName = _options[indexPath.section][indexPath.row];

    if ([optionName isEqualToString:@"跟随模式"])

    {

        return [self tableViewCellForViewMode];

    }

    if ([optionName isEqualToString:@"昼夜模式"])

    {

        return [self tableViewCellForNightType];

    }

    

    return nil;

}

 

#pragma mark - Custom TableView Cell

 

- (UITableViewCell *)tableViewCellForViewMode

{

    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ViewModeCellIdentifier"];

    

    _viewModeSeg = [[UISegmentedControl alloc] initWithItems:@[@"正北朝上" , @"车头朝上"]];

    [_viewModeSeg setFrame:CGRectMake(160, (kTableViewCellHeight - 30)/2.0, 150, 30)];

    _viewModeSeg.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

    [_viewModeSeg setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:_finishButton.backgroundColor} forState:UIControlStateNormal];

    [_viewModeSeg addTarget:self action:@selector(viewModeSegmentedControlAction:) forControlEvents:UIControlEventValueChanged];

    

    UILabel *optionNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, 0, 120, kTableViewCellHeight)];

    optionNameLabel.textAlignment = NSTextAlignmentLeft;

    optionNameLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;

    optionNameLabel.font = [UIFont systemFontOfSize:16];

    optionNameLabel.text = @"跟随模式:";

    optionNameLabel.textColor = [UIColor colorWithRed:80/255.0 green:80/255.0 blue:80/255.0 alpha:1];

    

    if (self.trackingMode == AMapNaviViewTrackingModeMapNorth)

    {

        [_viewModeSeg setSelectedSegmentIndex:0];

    }

    else if (self.trackingMode == AMapNaviViewTrackingModeCarNorth)

    {

        [_viewModeSeg setSelectedSegmentIndex:1];

    }

    

    [cell.contentView addSubview:optionNameLabel];

    [cell.contentView addSubview:_viewModeSeg];

    

    return cell;

}

 

 

- (UITableViewCell *)tableViewCellForNightType

{

    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ViewModeCellIdentifier"];

    

    UILabel *optionNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, 0, 120, kTableViewCellHeight)];

    optionNameLabel.textAlignment = NSTextAlignmentLeft;

    optionNameLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;

    optionNameLabel.font = [UIFont systemFontOfSize:16];

    optionNameLabel.text = @"昼夜模式:";

    optionNameLabel.textColor = [UIColor colorWithRed:80/255.0 green:80/255.0 blue:80/255.0 alpha:1];

    

    _nightTypeSeg = [[UISegmentedControl alloc] initWithItems:@[@"白天" , @"黑夜"]];

    _nightTypeSeg.frame = CGRectMake(160, (kTableViewCellHeight - 30)/2.0, 150, 30);

    _nightTypeSeg.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

    [_nightTypeSeg setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:_finishButton.backgroundColor} forState:UIControlStateNormal];

    [_nightTypeSeg addTarget:self action:@selector(nightTypeSegmentedControlAction:) forControlEvents:UIControlEventValueChanged];

    

    [_nightTypeSeg setSelectedSegmentIndex:self.showNightType];

    

    [cell.contentView addSubview:optionNameLabel];

    [cell.contentView addSubview:_nightTypeSeg];

    cell.separatorInset = UIEdgeInsetsMake(0, 1000, 0, 0);

    

    return cell;

}

 

#pragma mark - UISegmentedControl Action

 

- (void)viewModeSegmentedControlAction:(id)sender

{

    NSInteger selectedIndex = [(UISegmentedControl *)sender selectedSegmentIndex];

    

    if (self.delegate && [self.delegate respondsToSelector:@selector(moreMenuViewTrackingModeChangeTo:)])

    {

        [self.delegate moreMenuViewTrackingModeChangeTo:(AMapNaviViewTrackingMode)selectedIndex];

    }

}

 

- (void)nightTypeSegmentedControlAction:(id)sender

{

    NSInteger selectedIndex = [(UISegmentedControl *)sender selectedSegmentIndex];

    

    if (self.delegate && [self.delegate respondsToSelector:@selector(moreMenuViewNightTypeChangeTo:)])

    {

        [self.delegate moreMenuViewNightTypeChangeTo:selectedIndex];

    }

}

 

#pragma mark - Finish Button Action

 

- (void)finishButtonAction:(id)sender

{

    if (self.delegate && [self.delegate respondsToSelector:@selector(moreMenuViewFinishButtonClicked)])

    {

        [self.delegate moreMenuViewFinishButtonClicked];

    }

}

 

@end

原文地址:https://www.cnblogs.com/supersr/p/13677720.html