2011-08-06 78 views
1

我一直在研究這個,似乎只有這樣,才能做到這一點是使用UIActionSheet,問題是,我只UIActionSheet覆蓋屏幕的一半,我的代碼是:半TRANSPARANT modalViewController

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?有沒有比這更好的解決方案?這裏是什麼,我的意思是通過加載一半屏幕的截屏:

[在這裏輸入的形象描述] [1]

UPDATE:

這裏的a sample project來說明我的問題

+1

檢查編輯答案。 – Legolas

回答

1

UIActionSheet會增加或減少其根據UIButton,它出現的數字的高度。你可以做的是在你的視圖上添加你想要的alpha的另一個視圖。並將其從子視圖中刪除並根據您的要求添加到子視圖中,即在顯示操作表時添加子視圖並在解除時刪除UIActionSheet。我希望這與你的問題有關,它會幫助你解決你的問題。

1

問題是因爲TestViewController的框架大小以及將UIView作爲UIActionSheet的子視圖添加的方法。

進行以下更改,並且正確解散!

該方法

- (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]; 

} 

而在TestViewControllerviewDidLoad實施willPresentActionSheetaddSubView,設置

- (void)viewDidLoad 
{ 
self.view.frame = CGRectMake(0,0 , 320, 60); 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 
} 
+0

如何刪除取消和完成按鈕? – aherlambang

+0

爲什麼你將高度設置爲60而不是480? – aherlambang

+0

相對於UIActionSheet中想要的'uiview'的大小,幀大小有問題。如果你想看到整個框架,你將不得不爲這個任務使用'modalViewControllers'。您可以刪除取消和完成按鈕。檢查文檔非常容易配置的東西:) – Legolas