2011-01-07 25 views
2

我有一個比超級視圖更小的UIView,所以我可以在單擊按鈕時將此視圖表示爲模式視圖。在模式UIView後面的UIView上禁用元素

我已經設法做到以下幾點: *添加子視圖到超級視圖。 *以此模式視圖爲中心

我現在試圖使UIView背後的元素不可點擊。並且在我的模態視圖的位置添加一個灰色陰影,以便用戶理解模態視圖是焦點視圖。

我想知道如何做到這一點。

我不想使用演示模式轉換。我知道並且已經在其他項目中實現了這一點。 任何幫助表示讚賞。

回答

10

最簡單的情況是在「模態」視圖後面放置一個帶半透明灰色背景的全屏UIView。然後它會攔截所有的觸摸。它可能是這個樣子:

UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds]; 
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f]; 

[theSuperview addSubview:dimBackgroundView]; 
[theSuperview addSubview:modalView]; 

對於未來的參考,你可以設置myView.userInteractionEnabled = NO禁用視圖上的觸摸事件。

0

有幾種方法可以做到這一點。 如果您有定製位置自定義視圖,你可以修改它這樣的:

創建實例var

UIView* backgroundView; 

,只要你需要它,把它放在你的自定義視圖背後:

if (backgroundView == nil) 
     backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)]; 
backgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f]; 
[self.view addSubview:backgroundView]; 
[backgroundView animateBump:customView.view]; 
[backgroundView addSubview:customView.view]; 

當你不再需要它了

[backgroundView removeFromSuperview];