【问题标题】:Make Popover Background Black in Interface Builder在界面生成器中将弹出框背景设为黑色
【发布时间】:2013-11-13 08:11:09
【问题描述】:

我已经在界面生成器中成功连接了几个弹出视图。我试图通过将视图背景颜色设置为黑色来使背景变黑,但我仍然在弹出框本身上看到一个白色箭头,在 4 个圆角上看到白色伪影。

请看截图。

如何在界面生成器中使背景完全变黑?

我很欣赏下面的答案,但我仍然无法让它工作 - 这是我的代码:

// Show the satellite Ephemeris
    if ( itemIndex == 1 ) {

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            NSLog(@"This is an iPad - Creating popover!");
            EphemerisDataView *ephemView = [[EphemerisDataView alloc] init];
            UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:ephemView];
            [popOver setPopoverBackgroundViewClass:[DDPopoverBackgroundView class]];
            [popOver.popoverBackgroundViewClass setTintColor:[UIColor blackColor]];
            CGSize size = CGSizeMake(320, 480); // size of view
            popOver.popoverContentSize = size;
            [popOver presentPopoverFromRect:self.popOverAnchor.bounds inView:self.view
                             permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

        }
        else {
            NSLog(@"This is not an iPad - Performing segue...");
            // Show the next view
            [self performSegueWithIdentifier:@"Ephemeris" sender:self];
        }
    }

【问题讨论】:

    标签: iphone objective-c cocoa-touch uipopovercontroller uipopover


    【解决方案1】:

    您无法通过 IB 自定义该箭头。您将需要一个完全定制的弹出框。其中很多都可以在 git 上找到。但是,如果您想使用默认箭头,则也无法自定义该箭头。

    【讨论】:

    • 所以我发现了这个:github.com/ddebin/DDPopoverBackgroundView。但是我可以将它与界面生成器一起使用吗?我似乎无法弄清楚如何在界面生成器中设置 popoverBackgroundViewClass。
    【解决方案2】:

    这样做:

            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    
                NSLog(@"This is an iPad - Creating popover!");
                UIStoryboard *storyboard = [UIStoryboard storyboardWithName: @"MainStoryboard_iPad" bundle:[NSBundle mainBundle]];
                EphemerisDataView *ephemView = [storyboard instantiateViewControllerWithIdentifier:@"EphemerisDataView"];
                UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:ephemView];
                self.customPopoverController = popOver;
                [popOver setPopoverBackgroundViewClass:[DDPopoverBackgroundView class]];
                [popOver.popoverBackgroundViewClass setTintColor:[UIColor blackColor]];
                popOver.delegate = self;
                CGSize size = CGSizeMake(320, 480); // size of view
                popOver.popoverContentSize = size;
                [popOver presentPopoverFromRect:self.popOverAnchor.bounds inView:self.popOverAnchor
                                 permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    
            }
            else {
                NSLog(@"This is not an iPad - Performing segue...");
                // Show the next view
                [self performSegueWithIdentifier:@"Ephemeris" sender:self];
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      相关资源
      最近更新 更多