全部產品
Search
文件中心

Mobile Platform as a Service:浮層菜單

更新時間:Jul 13, 2024

浮層菜單提供一個包含表徵圖、選項列表的菜單。使用時需要把原來的 AntUI frameWork 中的 APNavPopview、APNavItemView 修改為 AUFloatMenu 和 AUNavItemView。

效果圖

  • 帶紅點浮層

  • 帶表徵圖浮層

  • 純文字浮層

介面說明

  • AUFloatMenu.h

//
//  AUFloatMenu.h
//  AntUI
//

#import <UIKit/UIKit.h>
/**popview 消失的通知*/
static NSString * const APExtUIPopViewDissmissedNotification = @"APExtUIPopViewDissmissedNotification";



@class AUNavItemView;
/*!
 @class       AUFloatMenu
 @abstract    UIView
 @discussion  floatViewMenu 浮層
 */
@interface AUFloatMenu : UIView<UIGestureRecognizerDelegate>
@property(nonatomic, assign) CGFloat marginToRight;  //白色 popview 距離螢幕右側的距離,不設定時預設為 10

/**
 *  建立浮動菜單視圖
 *
 *  @param position        浮動菜單在螢幕上展示的位置
 *  @param items           展示的內容數組,一般為 APNavItemView 對象
 *
 *  @return 浮動菜單視圖
 */
+(AUFloatMenu *)showAtPostion:(CGPoint)position items:(NSArray<AUNavItemView *> *)items;

/**
 *  建立浮動菜單視圖
 *
 *  @param position        浮動菜單在螢幕上展示的位置
 *  @param orignY          浮動菜單在螢幕上 y 座標值
 *  @param items           展示的內容數組,一般為 APNavItemView 對象
 *
 *  @return 浮動菜單視圖
 */
+(AUFloatMenu *)showAtPostion:(CGPoint)position startOrignY:(CGFloat)orignY items:(NSArray<AUNavItemView *> *)items;

/**
 *  浮動菜單消失介面方法
 */
-(void)dismiss;

/**
 *  菜單點開後發 RPC 載入動態下髮菜單項,RPC 完成後調 update,完成舊 view 移出,添加新 view 的過程
 */
- (void)updateWithItems:(NSArray<AUNavItemView*> *)items;

@end
  • AUNavItemView.h

//
//  AUNavItemView.h
//  AntUI
//

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, AUCurrentTabType)  {
    AUCurrentTabTypeHome = 0,
    AUCurrentTabTypeKouBei,
    AUCurrentTabTypeFriend,
    AUCurrentTabTypeWealth
};
/*!
 @class       AUNavItemView
 @abstract    UIView
 @discussion  floatMenu 浮層中每欄的 view
 */
@interface AUNavItemView : UIView
/**
 *  title
 */
@property(nonatomic,strong)NSString *itemTitle;

@property(nonatomic,strong,readonly)UIFont *titleFont;

/**
 *  正常狀態
 */
@property(nonatomic,strong)UIImage *nomarlStateIconImage;

/*
 * iconFont Name  如果是 iconFont 的話,則調用這個介面,不用調上面的介面
 */
@property(nonatomic,strong)NSString *nomarlStateIconFontName;

/**
 *  如果設定了 widgetId,就不需要設定 badgeNumber
 */
@property(nonatomic,strong)NSString *badgeNumber;

/**
 *  widgetId
 */
@property(nonatomic, copy) NSString *widgetId;

/**
 *VoiceOver 需要的提示的文案,預設是 itemTitle,如果沒有設定 itemTitle,需要手動設定此屬性來支援 VoiceOver
 */
@property(nonatomic,strong)NSString *voiceOverText;

@property(nonatomic,assign)BOOL isNavigationItem;

@property(nonatomic,assign,readonly)CGFloat touchEventMargin;

@property(nonatomic,assign)AUCurrentTabType currentTabType;

@property(nonatomic,assign,readonly)CGFloat marginBetweenIconTitle;

@property(nonatomic,assign,readonly)CGFloat marginBetweenLeftIcon;

@property(nonatomic,assign,readonly)CGFloat badgeViewWidth;

/**
 *  子類需重寫此方法,然後處理點擊的事件
 */
- (void)onClicked;

/**
 返回 Iconview 的 size

 @return size
 */
- (CGSize) iconViewSize;

@end

程式碼範例

  • 帶紅點浮層樣本:

//
//  APNavPopViewViewController.m
//  UIDemo
//

#import "APNavPopViewViewController.h"
#import "AUUtils.h"
#import "AUNavItemView.h"
#import "AUFloatMenu.h"
#import "AntUIShellObject.h"
#import "AUIconView.h"

@interface APNavPopViewViewController ()

@end

@implementation APNavPopViewViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = RGB(0xF5F5F9);

    self.navigationItem.title = @"帶紅點浮層";
    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"APCommonUI_ForDemo.bundle/more.png"] style:UIBarButtonItemStylePlain target:self action:@selector(onClick:)];
    self.navigationItem.rightBarButtonItem = rightItem;
    [[AURegisterManager shareInstance] registerAUObject:[[AntUIShellObject alloc] init]];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)onClick:(id)sender
{
    NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:4];

    NSArray *items = @[@"添加朋友",@"發起群聊",@"掃一掃",@"收錢",@"協助"];
    int i = 0;
    for (NSString *typeName in items)  {
        AUNavItemView *item = [[AUNavItemView alloc]initWithFrame:CGRectMake(20, 0, 0, 40)];
        item.itemTitle = typeName;
        item.isNavigationItem = NO;
        //支援iconfont
   //     item.nomarlStateIconFontName = kICONFONT_USER_ADD;
        if (i == 0 ) {
            item.badgeNumber = @"1";
            UIImage *image = [UIImage imageNamed:@"ap_add_friend.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 1) {
            item.badgeNumber = @"10";
            UIImage *image = [UIImage imageNamed:@"ap_group_talk.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 2) {
            item.badgeNumber = @"100";
            UIImage *image = [UIImage imageNamed:@"ap_scan.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 3) {
            item.badgeNumber = @"5";
            UIImage *image = [UIImage imageNamed:@"ap_qrcode.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 4) {
            UIImage *image = [UIImage imageNamed:@"ap_help.png"];
            item.nomarlStateIconImage = image;
        }
        i++;

        [array addObject:item];
    }

    [AUFloatMenu showAtPostion:CGPointMake(0, 0) startOrignY:70 items:array];
}

- (void)onBarButtonClick:(id)sender
{
}


@end
  • 帶表徵圖浮層樣本:

//
//  APNavPopViewViewController.m
//  UIDemo
//

#import "APNavPopViewNoneRedViewController.h"
#import "AUUtils.h"
#import "AUNavItemView.h"
#import "AUFloatMenu.h"
#import "AntUIShellObject.h"
#import "AUIconView.h"

@interface APNavPopViewNoneRedViewController ()

@end

@implementation APNavPopViewNoneRedViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = RGB(0xF5F5F9);

    self.navigationItem.title = @"帶表徵圖浮層";
    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"APCommonUI_ForDemo.bundle/more.png"] style:UIBarButtonItemStylePlain target:self action:@selector(onClick:)];
    self.navigationItem.rightBarButtonItem = rightItem;
    [[AURegisterManager shareInstance] registerAUObject:[[AntUIShellObject alloc] init]];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)onClick:(id)sender
{
    NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:4];

    NSArray *items = @[@"添加朋友",@"發起群聊",@"掃一掃",@"收錢",@"協助"];
    int i = 0;
    for (NSString *typeName in items)  {
        AUNavItemView *item = [[AUNavItemView alloc]initWithFrame:CGRectMake(20, 0, 0, 40)];
        item.itemTitle = typeName;
        item.isNavigationItem = NO;
        //支援 iconfont
   //     item.nomarlStateIconFontName = kICONFONT_USER_ADD;
        if (i == 0 ) {
//            item.badgeNumber = @"1";
            UIImage *image = [UIImage imageNamed:@"ap_add_friend.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 1) {
//            item.badgeNumber = @"10";
            UIImage *image = [UIImage imageNamed:@"ap_group_talk.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 2) {
//            item.badgeNumber = @"100";
            UIImage *image = [UIImage imageNamed:@"ap_scan.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 3) {
//            item.badgeNumber = @"5";
            UIImage *image = [UIImage imageNamed:@"ap_qrcode.png"];
            item.nomarlStateIconImage = image;
        } else if(i == 4) {
            UIImage *image = [UIImage imageNamed:@"ap_help.png"];
            item.nomarlStateIconImage = image;
        }
        i++;

        [array addObject:item];
    }

    [AUFloatMenu showAtPostion:CGPointMake(0, 0) startOrignY:70 items:array];
}

- (void)onBarButtonClick:(id)sender
{
}


@end
  • 純文字浮層樣本:

//
//  APNavPopViewViewController.m
//  UIDemo
//

#import "APNavPopViewOnlyViewController.h"
#import "AUUtils.h"
#import "AUNavItemView.h"
#import "AUFloatMenu.h"
#import "AntUIShellObject.h"
#import "AUIconView.h"

@interface APNavPopViewOnlyViewController ()

@end

@implementation APNavPopViewOnlyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = RGB(0xF5F5F9);

    self.navigationItem.title = @"純文字浮層";
    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"APCommonUI_ForDemo.bundle/more.png"] style:UIBarButtonItemStylePlain target:self action:@selector(onClick:)];
    self.navigationItem.rightBarButtonItem = rightItem;
    [[AURegisterManager shareInstance] registerAUObject:[[AntUIShellObject alloc] init]];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)onClick:(id)sender
{
    NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:4];

    NSArray *items = @[@"添加朋友",@"發起群聊",@"掃一掃",@"收錢",@"協助"];
    int i = 0;
    for (NSString *typeName in items)  {
        AUNavItemView *item = [[AUNavItemView alloc]initWithFrame:CGRectMake(0, 0, 0, 40)];
        item.itemTitle = typeName;
        item.isNavigationItem = NO;
        //支援 iconfont
   //     item.nomarlStateIconFontName = kICONFONT_USER_ADD;
//        if (i == 0 ) {
////            item.badgeNumber = @"1";
//            UIImage *image = [UIImage imageNamed:@"ap_add_friend.png"];
//            item.nomarlStateIconImage = image;
//        } else if(i == 1) {
////            item.badgeNumber = @"10";
//            UIImage *image = [UIImage imageNamed:@"ap_group_talk.png"];
//            item.nomarlStateIconImage = image;
//        } else if(i == 2) {
////            item.badgeNumber = @"100";
//            UIImage *image = [UIImage imageNamed:@"ap_scan.png"];
//            item.nomarlStateIconImage = image;
//        } else if(i == 3) {
////            item.badgeNumber = @"5";
//            UIImage *image = [UIImage imageNamed:@"ap_qrcode.png"];
//            item.nomarlStateIconImage = image;
//        } else if(i == 4) {
//            UIImage *image = [UIImage imageNamed:@"ap_help.png"];
//            item.nomarlStateIconImage = image;
//        }
        i++;

        [array addObject:item];
    }

    [AUFloatMenu showAtPostion:CGPointMake(0, 0) startOrignY:70 items:array];
}

- (void)onBarButtonClick:(id)sender
{
}


@end