LCAnimatedMenu 1.0.1

LCAnimatedMenu 1.0.1

测试已测试
语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

Luis Cardenas 维护。




概述

  

几个 UIView 子类,允许您在您的 iOS 应用程序中包括一个动画菜单。

基本上,库由几个 UIView 子类组成:LCAnimatedMenu 和 LCMenuItem。LCAnimatedMenu 作为一个容器为 LCMenuItem 对象(我们称之为项)。您可以添加任意多的项,但屏幕上只显示五个项。由于所有的项都添加到一个滚动视图中,您可以滚动菜单以查看之前添加的其他项。LCAnimatedMenu 类负责动画所有项的入场。

属性

对于 LCAnimatedMenu

containerView:这是最重要的属性。如果不设置它,将不会显示任何内容。您使用此属性告诉 LCAnimatedMenu 它的父视图是什么(通常是 self.view)。就是这样。

items:它用于传递一个包含要显示在菜单视图中的 LCMenuItem 对象的数组。只有传递 LCMenuIten 类成员的对象,如果不这样做,类将在运行时引发异常。

animationDuration:确定以秒为单位在屏幕上显示项的速度。默认为 1 秒。

position:一个类型为 LCAnimatedMenuPosition 的属性,用于告诉类在哪里显示菜单:底部的 LCAnimatedMenuPositionBottom 和顶部的 LCAnimatedMenuPositionTop。默认情况下,菜单在底部显示。

showBelowTopBars:仅与顶部位置的菜单一起使用。这是一个偏移量,将一些像素(64.0 精确)添加到菜单视图中,以避免与顶部栏(导航栏和状态栏)重叠。

delegate:设置一个 LCAnimatedMenuDelegate 协议的委托对象。

对于 LCMenuItem

borderColor:默认情况下,项以具有外观的方式显示,即一个圆角视图。这个圆角视图有边框,此属性设置其颜色。默认为 [UIColor grayColor]

lineWidth:这是边框的宽度。默认为1.0。

innerColor:如我之前所述,圆形视图有一个内圆。此属性设置该圆的颜色。默认为[UIColor colorWithWhite:1.0f alpha:0.7f]

actionBlock:在底层,每个项目在它们被按下时都会发送一条消息给其目标(即它自己),就像UIButton一样,但是,因为我更喜欢 blocks,所以每次任何按钮被按下时,我都会决定执行基于 blocks 的操作。如果您设置此属性,您不必担心按钮索引,也不需要实现代理方法。

默认配置在iOS 7应用中看起来非常好。

初始化方法

有以下几种方法来创建对象。对于LCMenuItem,有两种:

- (id)initWithImage:(UIImage *)image;
- (id)initWithImage:(UIImage *)image withActionBlock:(ActionBlock)actionBlock;

第一种使用图像初始化项目,第二种使用图像和操作块初始化项目。图像可以覆盖整个按钮视图,并且可以是任何大小。层蒙版将图像(分配给 JButton 对象的 image 属性)裁剪到项目边界内,并且内部行为将按钮的大小调整到50x50

您可以使用initWithFrame:方法初始化一个不带图像的项目。

对于LCAnimatedMenu类,您只有一个方法:

- (id)initWithItems:(NSArray *)items;

此方法使用项目(LCMenuItem对象)数组初始化LCAnimatedMenu对象。

如何在代码中使用它?

这很容易。按照以下步骤操作:

1. 导入类:在您的.m文件中导入这两个类(除非您正在实现协议方法)。

#import "LCAnimatedMenu.h"
#import "LCMenuItem.h"

2. 创建项目:viewWillAppear:方法中创建所需的项目数量。您可以通过多种方式初始化项目,我将展示两种。首先,将 actionBlock 属性作为初始化方法的参数传递:

LCMenuItem *item1 = [[LCMenuItem alloc] initWithImage:[UIImage imageNamed:@"item.png"]
                                      withActionBlock:^(void)
                         {
                             // do something cool
                         }];

或者,像我更喜欢的方式,在初始化后设置 actionBlock 属性

LCMenuItem *item1 = [[LCMenuItem alloc] initWithImage:[UIImage imageNamed:@"item.png"]];
item1.actionBlock = ^(void)
{
    // do something cool again
};

这两者都执行相同的工作。我将决定权留给您。但是,如果您不想使用图像初始化,您可以使用initWithFrame:方法。

LCMenuItem *item1 = [[LCMenuItem alloc] initWithFrame:CGRectZero];

3. 初始化菜单:传入之前创建的项目来初始化LCAnimatedMenu对象。

LCAnimatedMenu *menu = [[LCAnimatedMenu alloc] initWithItems:@[item1, item2, item3, item4, item5, item6]];

如果您想使类成为LCAnimatedMenuDelegate协议的代理,您必须将delegate属性设置为您的视图控制器(当然,类必须符合该协议)。

menu.delegate = self;

如果您想使菜单显示在屏幕顶部,请设置position属性。

menu.position = LCAnimatedMenuPositionTop;

此外,如果您的屏幕有状态栏和导航栏,并且您不希望菜单显示在这些栏下面,您需要将showBelowTopBars属性设置为YES

menu.showBelowTopBars = YES;

最后要做的最重要的事情是设置containerView属性。如果要在由UIViewController子类管理的常规屏幕中显示菜单,它通常是self.view,但您可以使用任何所需的自定义视图。

menu.containerView = self.view;

协议方法

这个小库有一些协议方法,它在菜单即将显示、已显示和即将隐藏时分别发出警告。

- (void)willDisplayAnimatedMenu:(LCAnimatedMenu *)animatedMenu;
- (void)didDisplayAnimatedMenu:(LCAnimatedMenu *)animatedMenu;
- (void)willHideAnimatedMenu:(LCAnimatedMenu *)animatedMenu;

您可以在自己的类中重写这些方法以在动画的所述状态下执行操作。

许可协议

MIT 许可协议 (MIT)

版权所有 (c) 2013 Luis Cardenas。保留所有权利。

授予任何获得本软件和相关文档文件(以下简称“软件”)副本的人免费使用该软件的权利,不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、许可和/或销售软件副本的权利,并允许向除软件外提供软件的人进行此类操作,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性的部分中。

软件按“现状”提供,不提供任何形式的陈述或保证,无论是明示还是默示的,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者都不应对任何索赔、损害或其他责任承担责任,无论是由于违反合同、侵权或任何其他行为,均不得追究由软件、使用或与软件相关的其他操作引起的索赔、损害或其他责任。