【问题标题】:disable elements on UIView behind modal UIView在模态 UIView 后面的 UIView 上禁用元素
【发布时间】:2011-01-07 13:21:26
【问题描述】:

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

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

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

我想知道如何实现。

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

【问题讨论】:

    标签: iphone objective-c background modal-view


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      有几种方法可以做到这一点。 如果你有一个自定义位置的自定义视图,你可以像这样修改它:

      创建实例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];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-23
        • 2020-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多