我有一个小于超级视图的 UIView,因此我可以在单击按钮时将此视图表示为模态视图。
我设法做到了以下几点: * 将子视图添加到超级视图。* 居中这个模态视图
我现在正试图使 UIView 背后的元素不可点击。并且还在我的模态视图的前面添加一个灰色阴影,以便用户了解模态视图是焦点视图。
我想知道如何实现这一目标。
我不想使用演示模式转换。我知道并且已经在其他项目中实现了这一点。任何帮助表示赞赏。
我有一个小于超级视图的 UIView,因此我可以在单击按钮时将此视图表示为模态视图。
我设法做到了以下几点: * 将子视图添加到超级视图。* 居中这个模态视图
我现在正试图使 UIView 背后的元素不可点击。并且还在我的模态视图的前面添加一个灰色阴影,以便用户了解模态视图是焦点视图。
我想知道如何实现这一目标。
我不想使用演示模式转换。我知道并且已经在其他项目中实现了这一点。任何帮助表示赞赏。
最简单的方法是在“模态”视图后面放置一个UIView
带有半透明灰色背景的全屏。然后它会拦截所有的触摸。它可能看起来像这样:
UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];
为了将来参考,您可以设置myView.userInteractionEnabled = NO
为禁用视图上的触摸事件。
有几种方法可以做到这一点。如果您有一个具有自定义位置的自定义视图,您可以像这样修改它:
创建一个实例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];