您的位置:首页 > 产品设计 > UI/UE

ios & UIActionSheet

2012-01-29 15:08 375 查看
UIActionSheet和UIPopoverController对于新手来说,经常会被搞得莫名其妙,继而猛揪头发,菊花一直处在紧绷的状态而不得解,下面我总结一下我用UIActionSheet的心得。

我想实现的一个功能是这样的:在我长按页面上的一个位置的时候,显示一个浮动窗口出来,窗口有指向此位置的指向缺口,窗口里面有菜单列表,点击触发各种操作。

听起来UIPopoverController是一个很好的选择,然后我们可以往UIPopoverController里面放我们所需要的button,刚开始实现还可以,后来被UIPopoverController的位置弄的焦头烂额,在屏幕内乱跑,并且放置多少button都需要自己计算来控制UIPopoverController的大小和位置,有想研究的可以看看这位仁兄的博客:http://xyyk.iteye.com/blog/838038

用UIPopoverController来实现还是比较麻烦的,其实,一个UIActionSheet就可以了,只不过要注意showInView方法是显示在屏幕中间,不会出现指示效果,而showFromRect方法是指向rect的中心位置的,具体用法如下:

UIActionSheet *tempActionsheet = [[UIActionSheet alloc] initWithTitle:strUrl

delegate:self

cancelButtonTitle:nil

destructiveButtonTitle:nil

otherButtonTitles:nil];

[tempActionsheet addButtonWithTitle:@“button name1”];

[tempActionsheet addButtonWithTitle:@“button name2”];

[tempActionsheet addButtonWithTitle:@“button name3”];

[tempActionsheet showFromRect:CGRectMake(ptx, pty, 1, 1) inView:self.view animated:NO];

[tempActionsheet release];

这段代码的意思是创建了一个UIActionSheet,指向:CGRectMake(ptx, pty, 1, 1)的中心,其他的委托方法自己查阅sdk实现

现在有一个问题就是当屏幕旋转的时候UIActionSheet会自动消失,我的解决方法是重新创建一次:将上面代码的tempActionsheet给私有成员:actionsheet,然后在屏幕旋转委托中调用:

[actionsheet dismissWithClickedButtonIndex:0 animated:NO];

[actionsheet release];

actionsheet = nil;

[self createActionSheet];//重新创建,再次调用上面代码

至此,UIActionSheet基本能够满足我们的要求,但是有一点至今没有搞懂的是,即使主动调用了:[actionsheet dismissWithClickedButtonIndex:0 animated:NO]; UIActionSheet在消失的时候还是会附加动画效果,这个问题困扰了我很久了,一直没有取消这个动画效果,有知道的高人能指点小弟一二,小弟不胜感激。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: