背景:
遇到一个需求,是点击按钮,不跳转任何页面,在点击的位置弹出一个view,然后做相应处理,
将数据返回给当前视图;
初步思路:
做一个透明的UIView,通过鼠标点击时间,记录坐标,然后根据该坐标present出一个UIView;
思路没问题,但是做起来太费时;想找个更简单的方法:
发现控件UIPopoverController是做弹层视图的,既然有满足要求的控件那就直接用嘛,结果发现没效果,而且不报错。。。再查之说是只能再ipad上用,因为iphone之类屏幕太小所以用不了。。坑啊。
难道要用之前想的那么做,还好有人已经做了那样想法的开源code了,只需要引入自己的工程调用即可。使用方法和UIPopoverController的API一模一样。
地址:https://github.com/werner77/WEPopover
实现:
一:简单
从上面网址点ZIP下载源码到本地,你可以直接运行查看效果;
如果要自己用,我们关注的代码是popover目录下的:
二:使用
上面自己看过效果后,然后在自己项目中使用:
需要的效果是:
首先将目录popover add到自己项目里面,基本你需要关心的就只有一个类WEPopoverController,做的效果就是弹出视图;
WEPopoverController有一个属性contentViewController就是将你需要弹出展示的view放在其中;
初始代码如下:在导航栏rightButton添加按钮点击事件(当然你可以用任何可以触发的事件,任意button或者tableView的section点击事件)
kaipaoButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"icon_game.png"] style:UIBarButtonItemStylePlain target:self action:@selector(showPopView)];
showPopView点击事件做的事就是弹出视图:注明:其中YLChatMenuViewController是自己写的需要展示的菜单;
-(void)showPopView{
if (self.popController) {//如果视图已弹出,则点击就是关闭视图
[self.popController dismissPopoverAnimated:YES];
}
YLChatMenuViewController *contentViewController = [[YLChatMenuViewController alloc]initWithStyle:UITableViewStylePlain];
contentViewController.chatViewController=self;
self.popController = [[WEPopoverController alloc] initWithContentViewController:contentViewController];
//将chatmenueview设置为pop的content即中心展示
[self.popController presentPopoverFromBarButtonItem:kaipaoButtonItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; }
如上是已经完成全部工作;
注意:
1:如果要更改其背景或箭头等图片方式:
设置属性WEPopoverContainerViewProperties即可,可以仿照WEPopoverController类中defaultContainerViewProperties方法;
甚至你可以直接改此方法中用到的图片等;因为如果你不设置WEPopoverController.containerViewProperties属性,就会用默认的方法;
初始化如下
WEPopoverContainerViewProperties *props = self.containerViewProperties ? self.containerViewProperties : [self defaultContainerViewProperties];
当然你也可以不用这些箭头什么的,直接更改你放入contentViewController(chatMenuController)的view背景色或背景图片
UIImageView * image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"popup_bg.9.png"]];
[self.tableView setBackgroundView:image];
2:设置弹层大小
直接设置chatmenuView
self.contentSizeForViewInPopover = CGSizeMake(150, 150);
分享到:
相关推荐
实现各种弹出消息/tips的效果。点击任意控件,按钮,导航条按钮,工具条按钮(UIBarButtonItem),都会弹出消息气泡。弹出的气泡会自动定位在相应的按钮旁边,并且有小箭头指向这个按钮。气泡的文字和颜色可以自定义...
在窗口顶端弹出自定义的提示视图(notification View)。弹出的notification view可以自动隐藏。如果有多个notification view,则进行排队,按顺序显示。可用于显示当前app的状态,用户操作的提示、提醒通知等等。...
在弹出对话框(Alert dialogue)中加入列表(UITableView)。 注意:请在Mac下解压使用
在弹出对话框(Alert dialogue)中加入登录框。即在UIAlertView中加入文字输入框(UITextField)。 注意:请在Mac下解压使用
用于当后台有任务运行时,或者用户进行了某些耗时较长的操作时,用于给用户显示提示信息。显示的提示信息位置位于...在效果图中,“Action From View 1”便是显示的提示信息,可以自动隐藏。 注意:请在Mac下解压使用
实现可以隐藏的面板。这个面板一般位于窗口的下方。起初只是一个箭头按钮,当用户点击箭头按钮时,面板会向上缓慢滑动出来。 注意:请在Mac下解压使用
弹出视图(Popup View)之自定义菜单UIMenuBar 弹出视图-Patterned Alert View 弹出视图-Table Alert 弹出视图类--Blur ModalView 弹出视图类--Depth View 弹出视图类--FWTPopover 弹出视图类--icon sheet 弹出...
实现各种弹出视图/气泡效果。点击任意控件,如按钮、导航条按钮、工具条按钮等,都会弹出消息气泡。弹出的视图会自动定位在相应的按钮旁边,并且有小箭头指向这个按钮。可以在弹出视图上加文字、控件或者图片。还...
实现弹出视图的各种弹出和消失效果,包括淡入淡出(fade in,fade out),从屏幕上方飞进,下方飞出,从屏幕左方飞进,右方飞出等等效果。 小编注:代码只支持ARC编译模式。 Code4App编译测试,适用环境:Xcode ...
来源:Licence:MIT平台:iOS设备:iPad作者:Collin ... 在Slider上加上弹出小视图。当用户手指移动滑块时,在滑块的上方弹出一个小文字框。不过,仅适用于iPad。 Code4App编译测试,适用环境:Xcode 4.3, iOS 5.0。