半透明modalViewController

时间:2011-08-06 05:36:12

标签: ios objective-c iphone ipad uiactionsheet

我一直在研究这个,似乎唯一的方法就是使用UIActionSheet,问题是我的UIActionSheet只覆盖了屏幕的一半,我的代码是:

MyViewController *myVC = [[myViewController alloc] init];
UIActionSheet *myActionSheet = [[UIActionSheet alloc] initWithTitle:@"\n\n"
                                                           delegate:self
                                                  cancelButtonTitle:@"cancel"
                                             destructiveButtonTitle:@"done"
                                                  otherButtonTitles:nil];
[myActionSheet addSubview:myVC.view];
[myActionSheet showInView:currentView];
[myActionSheet release];

另外,如何从MyViewController中关闭此UIActionSheet?有没有比这更好的解决方案?这是我加载一半屏幕的意思截图:

screenshot

以下a sample project来说明我的问题。

2 个答案:

答案 0 :(得分:1)

问题是因为TestViewController的框架大小和将UIView添加为UIActionSheet的子视图的方法。

进行以下更改,并且正确解雇!

在该方法中实施willPresentActionSheetaddSubView

- (IBAction)pressed:(id)sender
{
UIActionSheet *myActionSheet = [[UIActionSheet alloc] initWithTitle:@"\n\n" delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:@"done" otherButtonTitles:nil];
[myActionSheet showInView:self.view];
[myActionSheet release];   
}


- (void) willPresentActionSheet:(UIActionSheet *)actionSheet{

TestViewController *myVC = [[TestViewController alloc] init];
[actionSheet addSubview:myVC.view];

}

viewDidLoad的{​​{1}}中,设置

TestViewController

答案 1 :(得分:1)

UIActionSheet会根据其中UIButton的数量增加或减少它的高度。您可以做的是在视图上方添加另一个视图,并添加所需的alpha。然后将其从子视图中删除,并根据您的要求添加子视图,即在显示动作表时添加子视图,并在解除UIActionSheet时删除。我希望这与您的问题相关,它将帮助您解决问题。