浮層菜單提供一個包含表徵圖、選項列表的菜單。使用時需要把原來的 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;
@endAUNavItemView.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