【问题标题】:UIModalPresentationFormSheet White Corners [duplicate]UIModalPresentationFormSheet 白色角 [重复]
【发布时间】:2011-04-03 07:16:46
【问题描述】:

我正在尝试使用深色背景的 UIModalPresentationFormSheet,但视图的角落总是有一点白色显示。

可以看图here.

我以前从未见过这种情况。关于造成这种情况的任何想法?

【问题讨论】:

标签: cocoa-touch ios ipad


【解决方案1】:

首先导入“QuartzCore/QuartzCore.h”,其中 ViewController 将显示为 UIModalPresentationFormSheet,然后覆盖 viewWillAppear

- (void)viewWillAppear:(BOOL)animated 
{
    [super viewWillAppear:animated];
    self.view.superview.layer.cornerRadius = 10;
    self.view.superview.layer.borderColor = [UIColor darkGrayColor].CGColor;
    self.view.superview.layer.borderWidth = 1;
    self.view.superview.clipsToBounds = YES;
}

【讨论】:

  • 谁能解释一下这是怎么回事??
  • @Kunal,重绘圆角半径
【解决方案2】:

如果你想要阴影,你不应该剪辑到超级视图的边界。

此解决方案将保持阴影可见。

self.view.superview.layer.cornerRadius = 7.f;
for (CALayer *layer in self.view.superview.layer.sublayers)
    if (layer != self.view.layer)
        layer.cornerRadius = 8.f;

【讨论】:

    【解决方案3】:
        SpecPopover *ctrl = [[SpecPopover alloc] initWithNibName:@"SpecPopover" bundle:nil];
    
         // Create a Navigation controller
         UINavigationController *navController = [[UINavigationController alloc]
                                                             initWithRootViewController:ctrl];
    
         [self.navigationController pushViewController:ctrl animated:YES];
         navController.modalPresentationStyle = UIModalPresentationFormSheet;
         navController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
         navController.view.backgroundColor = [UIColor clearColor];        
    
         // show the navigation controller modally
         [self presentModalViewController:navController animated:YES];
          navController.view.superview.frame = CGRectMake (200,200,400,400);
         // Following removes the white round edges from the corner.       <<<<<<<<-------------   
         navController.view.superview.layer.cornerRadius = 8;
         navController.view.superview.layer.borderColor = [UIColor clearColor].CGColor;
         navController.view.superview.layer.borderWidth = 2;
         navController.view.superview.clipsToBounds = YES;
     [navController release];
            [ctrl release];
    

    【讨论】:

    • 欢迎来到 Stack Overflow!请说明您的 sn-p 是如何工作的,以及它如何解决问题。
    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 2016-06-30
    • 2019-12-14
    • 2012-02-02
    • 2015-05-27
    • 1970-01-01
    • 2022-01-21
    • 2011-12-02
    相关资源
    最近更新 更多