当前位置: 首页 > 知识库问答 >
问题:

在UIViewController上显示clearColor UIViewController

呼延晋
2023-03-14

我有一个UIViewController视图,作为另一个UIViewController视图之上的子视图/模式,例如子视图/模式应该是透明的,添加到子视图中的任何组件都应该是可见的。问题是,我有一个子视图显示黑色背景,而不是有清晰的颜色。我试图将UIView制作成清晰的颜色,而不是黑色背景。有人知道它怎么了吗?如有任何建议,我们将不胜感激。

FirstViewController. m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];

[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];  

第二视图控制器。M

- (void)viewDidLoad 
{
     [super viewDidLoad];
     self.view.opaque = YES;
     self.view.backgroundColor = [UIColor clearColor];
}

解决:我修复了问题。它在iPhone和iPad上都运行良好。模态视图控制器没有黑色背景,只是清晰的颜色/透明。我唯一需要更改的是我将UIModalPresentationFullScreen替换为UIModalPresentationMONtContext。多么简单啊!

FirstViewController. m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];

注意:如果您使用的是navigationControllermodalPresentationStyle属性:

FirstViewController. m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];

注意:坏消息是上述解决方案在iOS 7上不起作用。好消息是我修复了iOS7的问题!我向某人求助,他说:

以模式显示视图控制器时,iOS会在显示期间从视图层次结构中删除其下方的视图控制器。虽然您的模式显示视图控制器的视图是透明的,但除了黑色的应用程序窗口之外,它下面什么都没有。iOS 7引入了一种新的模式显示样式,UIModalPresentationCustom,它使iOS不删除显示视图控制器下的视图。但是,为了使用这种模式演示样式,您必须提供自己的转换代理来处理演示和取消动画。WWDC 2013的“使用视图控制器的自定义转换”演讲中概述了这一点https://developer.apple.com/wwdc/videos/?id=218其中还包括如何实现您自己的转换委托。

您可以在iOS7中看到我针对上述问题的解决方案:https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions

共有3个答案

濮阳君浩
2023-03-14

所以对于纯粹的视觉思考者和故事板爱好者,你可以这样做:

1.显示视图控制器

2.显示视图控制器

陆翰学
2023-03-14

解决:我解决了问题。它在iPhone和iPad上都运行得很好。没有黑色背景的模态视图控制器只有clearColor/透明。我唯一需要更改的是将UIModalPresentationFullScreen替换为UIModalPresentationCurrentContext。这是多么简单啊!

FirstViewController. m

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

注意:如果您使用的是navigationController的modalPresentationStyle属性:

FirstViewController. m

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

注意:坏消息是上述解决方案在iOS 7上不起作用。好消息是我修复了iOS7的问题!我向某人求助,他说:

以模式显示视图控制器时,iOS会在显示期间从视图层次结构中删除其下方的视图控制器。虽然您的模式显示视图控制器的视图是透明的,但除了黑色的应用程序窗口之外,它下面什么都没有。iOS 7引入了一种新的模式表示样式UIModalPresentationCustom,它使iOS不删除显示视图控制器下的视图。但是,为了使用这种模式演示样式,您必须提供自己的转换代理来处理演示和取消动画。WWDC 2013的“使用视图控制器的自定义转换”演讲中概述了这一点https://developer.apple.com/wwdc/videos/?id=218其中还包括如何实现您自己的转换委托。

您可以在iOS7中看到我针对上述问题的解决方案:https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions

公羊瀚
2023-03-14

损失8

在iOS8中,您现在可以使用新的modalPresentationStyle UIModalPresentationOverCurrentContext来呈现具有透明背景的视图控制器:

MyModalViewController *modalViewController = [[MyModalViewController alloc] init];
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;           
[self presentViewController:modalViewController animated:YES completion:nil];    
 类似资料:
  • 问题内容: 我正在寻找一种将 javadocs 从我的开源项目(在 Eclipse中 生成)转换为 GitHub MarkDown的方法 ,或者想出一些其他简单的解决方案在 GitHub上 显示我的文档(避开简单地添加目录)。有一个简单的解决方案吗?我可以简单地将 GitHub 指向我的目录吗?还有更优雅的东西吗?我一直在 Google 上 大放异彩 。 问题答案: 我认为用MarkDown制作一

  • 我有一个列表活动,其中用户可以执行打开操作模式和。用户还可以打开操作模式,然后在其顶部打开。 动作模式实际上是搜索动作模式,用户可以从中选择打开动作模式的结果(如果这有助于理解的话)。

  • 我有一个扩展JFrame的类。它使用以下代码将180个图像加载到数组中 更新:我尝试使用一个JLabel而不是我的ImagePanel类。JLabel似乎也有同样的问题。当我使用JPEG时,它会显示,但当我使用PNG时,它什么也不显示。

  • 我不知道如何解决这个问题,我似乎找不到一个会导致它失败的问题。下面是GUI代码的其余部分。它很长。将jtable添加到jpanel从第152行开始。

  • 我正在更新作为ios 6上传到AppStore的应用程序,以适应IOS 7 SDK,我有一个UIViewController的问题,我看到UIViewController在另一个上面闪烁了一秒钟,然后我可以看到第二个我应该,我添加了这张图片: ViewController中间的橙色来自上一个,它只发生在IOS 7上。推送到下一个视图控制器的代码是:`-(iAction)goButtonPresse

  • 谁能引导我过去吗?也许我的效用不好?