`
jsntghf
  • 浏览: 2533320 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

弹出菜单的实现

    博客分类:
  • iOS
阅读更多

核心代码如下,具体的请参考附件。

 

 

PopupPanelViewController.h

 

#import <UIKit/UIKit.h>

@class VerticalPopupPanel;
@interface PopupPanelViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate> {
    IBOutlet VerticalPopupPanel *verPanel;
}

- (IBAction)doPopupAction:(id)sender;
- (IBAction)cameraBtnTouchDown:(id)sender;
- (IBAction)settingBtnTouchDown:(id)sender;

@property (nonatomic, retain) IBOutlet VerticalPopupPanel *verPanel;
@end

 

PopupPanelViewController.m

 

#import "PopupPanelViewController.h"
#import "VerticalPopupPanel.h"
#import "SettingsViewController.h"

@implementation PopupPanelViewController

@synthesize verPanel;

- (void)dealloc {
	[verPanel release];
    [super dealloc];
}

- (IBAction)doPopupAction:(id)sender {
	if (verPanel.isPopup) {
		[verPanel hide];
	} else {
		[verPanel popup];
	}	
}

- (IBAction)cameraBtnTouchDown:(id)sender {
	UIImagePickerController *picker = [[UIImagePickerController alloc] init];
	picker.delegate = self;
	picker.sourceType = UIImagePickerControllerSourceTypeCamera;
	[self presentModalViewController:picker animated:YES];
	[picker release];	
}

- (IBAction)settingBtnTouchDown:(id)sender {
	SettingsViewController *settingView = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
	[self.navigationController pushViewController:settingView animated:YES];
	[settingView release];
}

#pragma mark - 
#pragma mark UIImagePickerController delegate

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
	[picker dismissModalViewControllerAnimated:YES];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
	[picker dismissModalViewControllerAnimated:YES];
}

@end

 

VerticalPopupPanel.h

 

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface VerticalPopupPanel : UIView {
	CGRect popupRect;
	CGRect hideRect;
	float panelHeight;
	BOOL isPopup;
}

@property BOOL isPopup;

- (void)popup;
- (void)hide;

@end

 

VerticalPopupPanel.m

 

#import "VerticalPopupPanel.h"

@implementation VerticalPopupPanel

@synthesize isPopup;

- (id)initWithCoder:(NSCoder *)aDecoder {
	if (self = [super initWithCoder:aDecoder]) {
		popupRect = self.frame;
		hideRect = CGRectMake(popupRect.origin.x, popupRect.origin.y + popupRect.size.height, popupRect.size.width, 0);
		self.frame = hideRect;
		isPopup = NO;
		[self.layer setCornerRadius:10.0];
		[self setClipsToBounds:YES];
	}
	return self;
}

- (void)popup {
	isPopup = YES;
	[UIView beginAnimations:nil context:nil];
	[UIView setAnimationDuration:0.2];
	[UIView setAnimationCurve:UIViewAnimationCurveLinear];
	[self setFrame:popupRect];
	[UIView commitAnimations];
}

- (void)hide {
	isPopup = NO;
	[UIView beginAnimations:nil context:nil];
	[UIView setAnimationDuration:0.2];
	[UIView setAnimationCurve:UIViewAnimationCurveLinear];
	[self setFrame:hideRect];
	[UIView commitAnimations];
}

- (void)dealloc {
    [super dealloc];
}

@end

 

示例图:


分享到:
评论

相关推荐

    javascript自定义右键弹出菜单实现方法.docx

    ### JavaScript自定义右键弹出菜单实现方法 在Web开发中,为了提升用户体验与功能多样性,自定义右键菜单是一种常见的交互方式。本文将详细解析如何利用JavaScript来实现一个简单的自定义右键弹出菜单,并深入探讨...

    弹出菜单代码文件

    这个“弹出菜单代码文件”显然包含了一段使用JavaScript编写的弹出菜单实现代码,这对于学习网页开发特别是JavaScript基础非常有价值。 JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,负责处理...

    jquery弹出菜单

    例如,`312.html`可能是包含弹出菜单实现的HTML页面,而`jquery.js`则是引入的jQuery库文件。开发过程中,确保jQuery库正确引用,并结合HTML结构和CSS样式,编写相应的JavaScript代码来实现弹出菜单的功能。在调试和...

    Android用PopupWindow实现弹出listview形式菜单

    在Android开发中,有时我们需要创建一个可自定义的弹出菜单,这通常通过使用`PopupWindow`类来实现。`PopupWindow`是Android系统提供的一个轻量级窗口,它可以显示在屏幕上的任意位置,用于创建浮动、弹出式的UI组件...

    显示隐藏层与弹出菜单JS

    以下是一个基本的弹出菜单实现: ```html ()"&gt;点击显示菜单 ;"&gt; 选项1 选项2 选项3 function showPopup() { var popup = document.getElementById('popupMenu'); popup.style.display = 'block'; } //...

    Qt实现鼠标右击弹出菜单

    在Qt框架中,实现鼠标右键点击弹出菜单是一项常见的需求,这主要涉及到信号与槽机制、QMenu类以及QAction类的使用。下面将详细解释如何在Qt5中实现这一功能。 首先,QMenu是Qt中用于创建下拉菜单或弹出菜单的类,而...

    微信小程序实现弹出菜单功能

    点击标签栏弹出菜单,并且出现透明遮罩; 遮罩优先级在弹出框之下; 弹出框内标签的设置; 滚动栏滚动条的隐藏 如何解决? 弹性布局,横向,三者平分整栏; 状态监听点击事件,数据控制hide或者show,通过rgba...

    Android-Android仿Qzone底部导航栏加号弹出菜单

    4. **弹出菜单实现**:有两种常见的方法来实现弹出菜单——PopupMenu或DialogFragment。 - **PopupMenu**:一个轻量级的弹出菜单,可以直接附加到View上。在上面的示例中,`showPopupMenu()`方法可以这样实现: ...

    Flutter高阶技术:如何实现自定义弹出菜单框

    本篇文章将深入探讨如何在Flutter中创建自定义弹出菜单框,包括它的设计原理、实现步骤以及相关组件的使用。 首先,我们要理解弹出菜单框的基本概念。它通常是在用户点击某个按钮或进行特定操作后,从屏幕边缘滑出...

    MFC编写高级弹出菜单

    5. **CBitmap** 和 **CBmpMenu**:在实现高级弹出菜单时,可能会用到位图来美化菜单项。`CBitmap` 类用于处理位图,而`CBmpMenu` 是一个自定义类,通常用于在菜单项上显示位图。`CBmpMenu.cpp` 和 `CBmpMenu.h` 文件...

    Qt pushbutton按钮弹出菜单

    以下是关于“Qt pushbutton按钮弹出菜单”的详细知识点: 1. **QPushButton类**: QPushButton是Qt GUI库中的一个类,用于创建具有文本或图标的标准按钮。它继承自QAbstractButton,提供了单击、双击等多种事件...

    弹出菜单封装库

    通过以上介绍,我们可以看到,这个"弹出菜单封装库"不仅简化了iOS开发中的弹出菜单实现,还提供了丰富的自定义选项和良好的可扩展性。对于开发者来说,这无疑是一个非常实用的工具,可以极大地提升开发效率和应用...

    ios实现点击button弹出菜单效果

    总结,实现iOS中的点击Button弹出菜单效果,需要理解UIButton的事件处理、自定义视图的创建(如UITableView)、以及利用UIView动画来实现动态效果。通过这些技术的组合,可以创建出用户友好且功能丰富的交互界面。在...

    android自定义popupwindow仿微信右上角弹出菜单效果

    在微信右上角弹出菜单的实现中,主要涉及以下几点: 1. **窗口布局文件**:如文件中的`popwin_share.xml`,这是一个包含多个菜单项的线性布局。每个菜单项由一个ImageView(用于显示图标)和一个TextView(显示文本...

    右键弹出子菜单右键弹出子菜单

    本文将深入探讨如何使用易语言这一国产编程语言来实现右键弹出菜单的功能,包括两种不同的实现方法:DLL命令实现和易语言菜单实现。 首先,我们来看DLL(动态链接库)命令实现。DLL是一种可执行代码的库,可以在多...

    qt实现右击鼠标弹出菜单

    总结,通过以上步骤,我们可以成功地在Qt应用中实现右键单击弹出菜单的功能。这个小例子对初学者来说是非常有帮助的,它涵盖了Qt界面编程的基础知识,包括事件处理、菜单操作以及字符串的国际化处理。在实际开发中,...

    Delphi XE7实现的任意位置弹出菜单

    在Delphi XE7中,实现一个任意位置弹出菜单是一项常见的编程任务,这涉及到对Windows API的理解,以及对Delphi组件的熟练运用。本文将深入探讨如何在Delphi XE7环境中创建一个可以在屏幕任意位置显示的弹出菜单。 ...

    微信小程序--弹出菜单

    在微信小程序的开发过程中,实现“弹出菜单”是一项常见且实用的功能。弹出菜单的设计理念是为了提供一种高效、简洁的交互方式,用户可以通过点击一个图标或者按钮,来触发一个隐藏的菜单,而这个菜单不会占用屏幕的...

    右侧弹出菜单

    从压缩包子文件的文件名称 "jquery-nav" 来看,这可能是一个基于jQuery的导航插件,用于实现右侧弹出菜单的效果。jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理和动画等任务,使得开发者可以更轻松地...

    labview 的右键弹出式菜单例子

    LabVIEW提供了一个名为“显示菜单”的函数,用于在指定位置显示一个弹出菜单。我们需要将之前创建的菜单项数组传递给这个函数,以及用户点击的位置坐标。 5. **菜单回调**: 每个菜单项都有一个回调函数,当用户...

Global site tag (gtag.js) - Google Analytics