2

我有一个小于超级视图的 UIView,因此我可以在单击按钮时将此视图表示为模态视图。

我设法做到了以下几点: * 将子视图添加到超级视图。* 居中这个模态视图

我现在正试图使 UIView 背后的元素不可点击。并且还在我的模态视图的前面添加一个灰色阴影,以便用户了解模态视图是焦点视图。

我想知道如何实现这一目标。

我不想使用演示模式转换。我知道并且已经在其他项目中实现了这一点。任何帮助表示赞赏。

4

2 回答 2

11

最简单的方法是在“模态”视图后面放置一个UIView带有半透明灰色背景的全屏。然后它会拦截所有的触摸。它可能看起来像这样:

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

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

为了将来参考,您可以设置myView.userInteractionEnabled = NO为禁用视图上的触摸事件。

于 2011-01-07T17:13:38.737 回答
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];
于 2013-12-05T11:55:20.213 回答