我无法以UITableView
半透明的Apple风格制作UIPopoverView
。这里是我正在使用的代码,对我已经尝试过但发现不起作用的评论。任何帮助非常感谢!
请注意,我无法使用Storyboard segues,因为我从动态tableview单元格单元格原型启动此弹出窗口。
popoverViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"TargetPickVC"];
popoverViewController.target = _target;
//popoverViewController.tableView.backgroundColor = [UIColor clearColor]; // Does nothing
//popoverViewController.tableView.alpha = 0.1; // Does make tableview text lighter
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:popoverViewController];
nav.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popPC = nav.popoverPresentationController;
//popPC.containerView.alpha = 0.1; // Does nothing
nav.popoverPresentationController.sourceRect = ((UITableView*)[self.tableView cellForRowAtIndexPath:indexPath]).frame;
nav.popoverPresentationController.sourceView = self.view;
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
popPC.delegate = self;
//popoverViewController.tableView.backgroundColor = [UIColor clearColor]; // No
//popoverViewController.view.backgroundColor = [UIColor clearColor]; // visible
//nav.view.backgroundColor = [UIColor clearColor]; // results
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController:nav animated:YES completion:nil];
});
目前的结果如下: Opague popover
答案 0 :(得分:0)
首先,您实际上可以将segues与动态原型一起使用 - 只需在按 ctrl 时单击原型,然后拖动到目标场景。您可以在-prepareForSegue:method
中预配置该VC如果您在iPad上执行此操作,请添加此行nav.popoverPresentationController.backgroundColor = [UIColor clearColor];
它应该有助于从你的popover中删除白色背景。但它在iPhone上没有帮助 - 你会看到黑色背景,这是主窗口的背景。要解决此问题,您需要将 UIModalPresentationPopover 更改为专门针对iPhone的 UIModalPresentationOverCurrentContext 。
但如果它不会得到帮助而您将继续获得白色背景 - 尝试将背景颜色设置为视图层次结构的所有层 - 导航控制器,TargetPickVC和巡视表视图。喜欢这个
popoverViewController.tableView.backgroundColor = [UIColor clearColor];
popoverViewController.view.backgroundColor = [UIColor clearColor];
nav.view.backgroundColor = [UIColor clearColor];
希望它会有所帮助